|
|
|
@ -18,7 +18,7 @@ get Chapter 8 for editing. /Carol -->
|
|
|
|
|
|
|
|
|
|
### 定义一个带有自定义行为的Trait
|
|
|
|
|
|
|
|
|
|
不过,在Rust语言中,我们可以定义一个 `Draw` trait,包含名为 `draw` 的方法。我们定义一个由*trait对象*组成的vector,绑定了某指针的trait,比如`&`引用或者一个`Box<T>`智能指针。
|
|
|
|
|
不过,在Rust语言中,我们可以定义一个 `Draw` trait,包含名为 `draw` 的方法。我们定义一个由*trait对象*组成的vector,绑定了某种指针的trait,比如`&`引用或者一个`Box<T>`智能指针。
|
|
|
|
|
|
|
|
|
|
之前提到,我们不会称结构体和枚举为对象,以区分其他语言的结构体和枚举对象。结构体或者枚举成员中的数据和`impl`块中的行为是分开的,而其他语言则是数据和行为被组合到一个对象里。Trait 对象更像其他语言的对象,因为他们将其指针指向的具体对象作为数据,将在trait 中定义的方法作为行为,组合在了一起。但是,trait 对象和其他语言是不同的,我们不能向一个 trait 对象增加数据。trait 对象不像其他语言那样有用:它们的目的是允许从公有行为上抽象。
|
|
|
|
|
|
|
|
|
|