教程 rust tutorial

泛型 Generics

泛型使函数、结构体、枚举和方法能够操作多种数据类型,而无需重复代码。

泛型函数示例

rust
fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];
    for item in list.iter() {
        if item > largest {
            largest = item;
        }
    }
    largest
}

fn main() {
    let nums = vec![10, 20, 15];
    println!("最大的数字是 {}", largest(&nums));

    let chars = vec!['a', 'x', 'm'];
    println!("最大的字符是 {}", largest(&chars));
}

泛型结构体示例

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

fn main() {
    let p1 = Point { x: 5, y: 10 };
    let p2 = Point { x: 1.0, y: 4.0 };
    println!("p1: ({}, {}), p2: ({}, {})", p1.x, p1.y, p2.x, p2.y);
}

代码演示

Rust Playground
打开运行
fn largest<T: PartialOrd>(list: &[T]) -> &T {
    let mut largest = &list[0];
    for item in list.iter() {
        if item > largest {
            largest = item;
        }
    }
    largest
}

fn main() { let nums = vec![10, 20, 15]; println!("最大的数字是 {}", largest(&nums));

let chars = vec!['a', 'x', 'm'];
println!(&quot;最大的字符是 {}&quot;, largest(&amp;chars));

struct Point&lt;T&gt; {
    x: T,
    y: T,
}

let p1 = Point { x: 5, y: 10 };
let p2 = Point { x: 1.0, y: 4.0 };
println!(&quot;p1: ({}, {}), p2: ({}, {})&quot;, p1.x, p1.y, p2.x, p2.y);

}