泛型(Generics)是用于高效处理重复概念的工具,是具体类型或其他属性的抽象替代。
在Rust中,泛型是一种让函数、结构体、枚举、Trait等支持多种类型二不重复代码的机制;(类似于C++中的模板)Rust的泛型在编译期是单态化(monomorphization)的,即在编译时将泛型替换为具体的类型,不会带来运行期开销。
函数中的泛型
泛型函数是指,在函数签名中指定参数和返回值的类型的地方,改用泛型表示。
以查找切片中最大值为例(为保证元素可比较,需要约束为PartialOrd):
fn largest<T: std::cmp::PartialOrd>(list: &[T]) -> &T {
let mut largest = &list[0];
for item in list {
if item > largest {
largest = item;
}
}
largest
}
const泛型
数组类型在 Rust 中写作 [T; N]:
T是元素类型(可以是泛型参数);N是编译期常量长度(const)。
同一类型不同长度的数组也是不同的数组类型。可以使用数组切片(引用)和泛型来解决处理任何类型数组的问题。
定义一个可以接受任意类型、任意长度的数组的函数:
fn print_array<T: std::fmt::Debug

最低0.47元/天 解锁文章
576

被折叠的 条评论
为什么被折叠?



