注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
lugl4313820的个人空间 https://home.eeworld.com.cn/space-uid-1269709.html [收藏] [复制] [分享] [RSS]
日志

《Rust实战》学习泛型函数

已有 495 次阅读2024-4-19 16:24

为了一个函数可以接收与处理多种可能的输入类型,Rust引入的泛型类型。

在处理匹配多种类型,又使用了trait功能,在输入时核对能否支持传入函数的操作。

作者给出了如下的函数:

use std::ops::{Add};
use std::time::{Duration};

fn add<T: Add<Output = T>>(i: T, j: T) -> T {
    i + j
}

fn main() {
    let floats = add(1.2 , 3.4);
    let ints = add(10,20);
    let durations = add(
        Duration::new(5,0),
        Duration::new(10, 0)
        
    );
    println!("{}",floats);
    println!("{}", ints);
    println!("{:?}", durations);
}

在头部从std::ops中导入Add这个trait到当前的局部作用域。

从std::time 中导入Duration类型到当前局部作用域中。

从上面的例子中,函数签名变得非复杂,要读懂这些复杂的函数签名,需要一些耐心。作者给出了下面的原则:

1、小写字母(例如i、j)表示变量。

2、单个大写字母(例如T)表示泛型类型。

3、以大写字母开头的(例如Add)是trait的名字或者是具体类型的名字,比如String、Duration。

4、标签(例如'a)表示生命周期参数。

到了这里,其实在Rust的安全性下,对编程者需要有很扎实的基本功,要不读代码都非常吃力呀。

加油、努力学习中!

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章