|
|
@ -128,7 +128,7 @@ fn display(s: &str) {
|
|
|
|
|
|
|
|
|
|
|
|
- `String` 实现了 `Deref` 特征,能被转换成一个 `&str`
|
|
|
|
- `String` 实现了 `Deref` 特征,能被转换成一个 `&str`
|
|
|
|
- `s` 是一个 `String` 类型,当它被传给 `display` 函数时,自动通过 `Deref` 转换成了 `&str`
|
|
|
|
- `s` 是一个 `String` 类型,当它被传给 `display` 函数时,自动通过 `Deref` 转换成了 `&str`
|
|
|
|
- 必须使用 `&s` 的方式来触发 `Deref`(`&s` 相当于调用 `s` 的 `deref` 方法)
|
|
|
|
- 必须使用 `&s` 的方式来触发 `Deref`(仅引用类型的实参才会触发自动解引用)
|
|
|
|
|
|
|
|
|
|
|
|
#### 连续的隐式 Deref 转换
|
|
|
|
#### 连续的隐式 Deref 转换
|
|
|
|
如果你以为 `Deref` 仅仅这点作用,那就大错特错了。`Deref` 可以支持连续的隐式转换,直到找到适合的形式为止:
|
|
|
|
如果你以为 `Deref` 仅仅这点作用,那就大错特错了。`Deref` 可以支持连续的隐式转换,直到找到适合的形式为止:
|
|
|
|