Update Ch15

This commit is contained in:
Peng Hailin, 2023-05-08 20:34:38 +08:00
parent da6d4ced48
commit 5079dde8db

View File

@ -407,9 +407,9 @@ Rust 将 `*` 运算符替换为对 `deref` 方法的调用,然后是普通的
> 注:在面向对象编程语言 Java 中,类似的特性叫 ["自动装箱"](https://java.xfoss.com/Ch10_Numbers_and_Statics_Numbers_Matter.html#自动装箱模糊原生值与对象之间的界线)。
为了程序员们在编写函数与方法调用时,无需使用 `&``*` 添加许多的那些显示引用和解引用,解引用强制转换特性就这样被添加到 Rust 了。这种解引用强制转换,还实现更多既可在引用,亦可在灵巧指针上起作用代码的编写
解引用强制转换被添加到 Rust 中,这样编写函数和方法调用的程序员就不需要用 `&``*` 添加那么多显式引用和解引用。解引用强制转换特性,也让咱们写出更多既可以用于引用,也可以用于灵巧指针的代码
下面就来使用定义在清单 15-8 中的这个 `MyBox<T>` 类型,以及在清单 15-10 中添加的那个 `Deref` 实现,来看看运作中的解引用强制转换。下面清单 15-11 给出了有着一个字符串切片参数的某个函数定义:
为了看到解引用强制转换的作用,下面咱们来使用清单 15-8 中定义的 `MyBox<T>` 类型,以及清单 15-10 中添加的 `Deref` 的实现。清单 15-11 给出了一个有字符串切片参数的函数定义:
文件名:`src/main.rs`
@ -419,7 +419,7 @@ fn hello(name: &str) {
}
```
*清单 15-11有着类型 `&str` 参数 `name``hello` 函数*
*清单 15-11有着类型 `&str` 参数 `name``hello` 函数*
这里可使用一个字符串切片作为参数,调用这个 `hello` 函数,譬如 `hello("Rust");`。而解引用强制转换特性,就令到使用到类型 `MyBox<String>` 值的引用,来调用 `hello` 成为可能,如下清单 15-12 中所示: