mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-03-14 03:10:44 +08:00
Update Ch10
This commit is contained in:
parent
d64120937b
commit
0e51754616
@ -437,13 +437,13 @@ fn main() {
|
||||
|
||||
在 `main` 函数中,咱们定义了一个有着 `x` 为 `i32` (值为 `5`),及 `y` 为 `f64` (值为 `10.4`)的 `Point`。变量 `p2` 是个有着 `x` 为字符串切片(值为 `Hello`),同时 `y` 为 `char` (值为 `c`)的 `Point` 结构体。以参数 `p2` 调用 `p1` 上的 `mixup`,就给到咱们 `p3`,由于 `p3` 的 `x` 来自于 `p1`,因此将有一个 `i32` 的 `x`。而由于这个变量 `p3` 的 `y` 来自于 `p2`, 因此他将有一个 `char` 的 `y`。那个 `println!` 宏调用,将打印 `p3.x = 5, p3.y = c`。
|
||||
|
||||
此示例的目的,是要对其中有些泛型参数是以 `impl` 来声明,而另一些泛型参数则是以方法定义来声明的情形,加以演示。由于这里的泛型参数 `T` 与 `U` 与结构体定义在一起,因此他们是在 `impl` 后声明的。而其中的泛型参数 `X` 与 `Y`,则由于他们只与那个方法 `mixup` 有关,所以他们就被声明在了 `fn mixup` 之后。
|
||||
此示例的目的,是要对其中有些泛型参数是以 `impl` 来声明,而另一些泛型参数则是以方法定义来声明的情形,加以演示。由于这里的泛型参数 `T` 与 `U` 与结构体定义在一起,因此他们是在 `impl` 后声明的。而其中的泛型参数 `X` 与 `Y`,则由于他们只与方法 `mixup` 有关,所以他们就被声明在了 `fn mixup` 之后。
|
||||
|
||||
|
||||
### 使用泛型参数代码的性能问题
|
||||
|
||||
|
||||
这里或许想了解,在运用了泛型参数时,是否有着运行时的开销。好消息就是,相比于使用具体类型,使用泛型并不会令到程序运行得更慢。
|
||||
咱们或许想知道,在运用了泛型参数时,是否有着运行时的开销。好消息就是,相比于使用具体类型,使用泛型并不会令到程序运行得更慢。
|
||||
|
||||
Rust 通过在编译时,完成那些使用了泛型代码的单态化(performing monomorphization of the code using generics),实现了这一点。所谓 *单态化(monomorphization)*,即通过将在编译后用到的具体类型填入进去,而将通用代码转换为具体代码的过程。在此过程中,编译器会执行与清单 10-5 中曾创建通用函数相反的步骤:编译器会查看所有泛型代码被调用到的地方,并生成调用到泛型代码的那些具体类型的代码。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user