1.2 新建

原文链接: https://rust-unofficial.github.io/too-many-lists/first-new.html

要把实际代码与类型关联起来,我们使用 impl 块:

1
2
3
impl List {
    // TODO,让代码跑起来
}

现在我们只需要弄清楚如何真正写代码。在 Rust 中,我们这样声明函数:

1
2
3
fn foo(arg1: Type1, arg2: Type2) -> ReturnType {
    // 函数体
}

我们首先需要一种构造链表的方式。由于我们隐藏了实现细节,需要以函数的形式提供。在 Rust 中,通常的做法是提供一个静态方法,也就是在 impl 里的普通函数:

1
2
3
4
5
impl List {
    pub fn new() -> Self {
        List { head: Link::Empty }
    }
}

几点说明:

  • Self 是「我在 impl 旁边写的那个类型」的别名。不用重复自己,很棒!
  • 创建结构体实例的方式与声明结构体很像,只不过不是提供字段的类型,而是用值来初始化它们。
  • 我们用 :: 来引用枚举的变体,这是命名空间运算符。
  • 函数的最后一条表达式会隐式返回。这让简单函数更整洁。你仍然可以像其他类 C 语言一样用 return 提前返回。
最后修改 August 23, 2026: 更新 (499855b16)