|
|
@ -184,7 +184,7 @@ struct AlwaysEqual;
|
|
|
|
let subject = AlwaysEqual;
|
|
|
|
let subject = AlwaysEqual;
|
|
|
|
|
|
|
|
|
|
|
|
// 我们不关心为AlwaysEqual的字段数据,只关心它的行为,因此将它声明为元结构体,然后再为它实现某个特征
|
|
|
|
// 我们不关心为AlwaysEqual的字段数据,只关心它的行为,因此将它声明为元结构体,然后再为它实现某个特征
|
|
|
|
impl AlwaysEqual for SomeTrait {
|
|
|
|
impl SomeTrait for AlwaysEqual {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
```
|
|
|
@ -194,7 +194,7 @@ impl AlwaysEqual for SomeTrait {
|
|
|
|
|
|
|
|
|
|
|
|
在之前的`User` 结构体的定义中,我们使用了自身拥有所有权的 `String` 类型而不是基于引用的`&str` 字符串切片类型。这是一个有意而为之的选择,因为我们想要这个结构体拥有它所有的数据,而不是从其它地方借用数据。
|
|
|
|
在之前的`User` 结构体的定义中,我们使用了自身拥有所有权的 `String` 类型而不是基于引用的`&str` 字符串切片类型。这是一个有意而为之的选择,因为我们想要这个结构体拥有它所有的数据,而不是从其它地方借用数据。
|
|
|
|
|
|
|
|
|
|
|
|
你也可以让`User`结构体从其它对象借用数据,不过这么做,就需要引入**生命周期**这个新概念(也是一个复杂的概念),简而言之,生命周期能确保结构体的作用范围要比它所借用的数据的作用范围要大。
|
|
|
|
你也可以让`User`结构体从其它对象借用数据,不过这么做,就需要引入**生命周期**这个新概念(也是一个复杂的概念),简而言之,生命周期能确保结构体的作用范围要比它所借用的数据的作用范围要小。
|
|
|
|
|
|
|
|
|
|
|
|
总之,如果你想在结构体中使用一个引用,就必须加上生命周期,否则就会报错:
|
|
|
|
总之,如果你想在结构体中使用一个引用,就必须加上生命周期,否则就会报错:
|
|
|
|
|
|
|
|
|
|
|
|