新建
我们使用了impl
块,将实际的代码与类型联系起来:
impl List {
// TODO, make code happen
}
现在我们只需要弄清楚如何实际编写代码。在Rust中,我们这么声明一个函数:
fn foo(arg1: Type1, arg2: Type2) -> ReturnType {
// body
}
我们首先需要的是一种构造列表的方式。由于我们隐藏了实现细节,我们需要以函数的形
式来提供。在Rust中,通常的方法是提供一个静态方法,也就是在impl
中提供一个普通的
函数:
impl List {
pub fn new() -> Self {
List { head: Link::Empty }
}
}
有几点说明:
- Self是“我写在最上面的那个在
impl
旁边的类型”的别名。很好的避免了自己的重复。 - 我们创建一个结构体的实例的方式与我们声明它的方式很相似,只是我们没有提供它的字 段类型,而是用值来初始化它们
- 我们使用
::
来引用一个枚举的变体,这是命名间隔操作符。 - 一个函数的最后一个表达式是隐式返回的。这使得简单的函数变得更加整洁。你仍然可以 像其他类C语言一样,使用return来提前返回。