跳到主要内容

Rust 泛型

阐述

泛型是对一系列具有共同特点的类型的总结,可以使用在枚举、结构体和函数等场景。

被抽象出来的类型称为类型参数,可以为类型参数添加 Rust 特征的限制。

除了抽象出来类型之外,对于数组等情况也可以抽象出来值作为参数,此时称为 const 泛型。

实例

泛型函数

fn add<T: std::ops::Add<Output = T>>(a:T, b:T) -> T {
a + b
}

泛型结构体

struct Point<T> {
x: T,
y: T,
}

fn main() {
let integer = Point { x: 5, y: 10 };
let float = Point { x: 1.0, y: 4.0 };
}

泛型枚举

enum Option<T> {
Some(T),
None,
}

泛型方法

可以为所有类型实现方法,也可以为一个类型实现方法:

impl Point<f32> {
fn distance_from_origin(&self) -> f32 {
(self.x.powi(2) + self.y.powi(2)).sqrt()
}
}

const 泛型

fn display_array<T: std::fmt::Debug, const N: usize>(arr: [T; N]) {
println!("{:?}", arr);
}
fn main() {
let arr: [i32; 3] = [1, 2, 3];
display_array(arr);

let arr: [i32; 2] = [1, 2];
display_array(arr);
}

性质

相关内容

参考文献