泛型方法

您可以在 impl 块中声明通用类型:

#[derive(Debug)]
struct Point<T>(T, T);

impl<T> Point<T> {
    fn x(&self) -> &T {
        &self.0  // + 10
    }

    // fn set_x(&mut self, x: T)
}

fn main() {
    let p = Point(5, 10);
    println!("p.x = {}", p.x());
}
  • *问:*为什么 Timpl<T> Point<T> {} 中指定了两次?这不是多余的吗?
    • 这是因为它是泛型类型的泛型实现部分。它们是独立的泛型内容。
    • 这意味着这些方法是针对所有 T 定义的。
    • 可以编写 impl Point<u32> { .. }
      • Point 依然是一个泛型,并且您可以使用 Point<f64>,但此块中的方法将仅适用于 Point<u32>