From 83cd6e5552d83ec0cdf61c7573fbb3e37ad03f3e Mon Sep 17 00:00:00 2001 From: Unisko PENG Date: Thu, 13 Apr 2023 11:41:51 +0800 Subject: [PATCH] Update Ch10 --- src/Ch10_Generic_Types_Traits_and_Lifetimes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ch10_Generic_Types_Traits_and_Lifetimes.md b/src/Ch10_Generic_Types_Traits_and_Lifetimes.md index 3aef4d1..0233f9b 100644 --- a/src/Ch10_Generic_Types_Traits_and_Lifetimes.md +++ b/src/Ch10_Generic_Types_Traits_and_Lifetimes.md @@ -454,7 +454,7 @@ let integer = Some(5); let float = Some(5.0); ``` -在 Rust 编译此代码时,他就会执行单态化。在那个过程中,编译器会读取已在这两个 `Option` 实例中用到的值,而识别到两种类型的 `Option`:一个为 `i32`,同时另一个为 `f64`。这样一来,编译器就会把 `Option` 的通用定义,展开为两个专门的 `i32` 与 `f64` 定义,由此就用这些特定类型,替换了通用定义。 +在 Rust 编译此代码时,他会执行单态化。在那个过程中,编译器会读取这两个 `Option` 实例中用到的值,并识别到两种类型的 `Option`:一个为 `i32`,而另一个为 `f64`。这样一来,编译器就会把 `Option` 的通用定义,展开为两个专门的 `i32` 与 `f64` 定义,由此就用这些特定类型,替换了通用定义。 单态化的代码版本,看起来与下面的类似(编译器会使用不同于这里为演示目的而使用的名字): @@ -478,7 +478,7 @@ fn main() { } ``` -这个通用的 `Option`,就被以编译器创建的具体定义给替换掉了。由于 Rust 将通用代码,编译为指明了各个实例中类型的代码,那么就不会为运用泛型,而付出运行时代价。在运行的时候,代码就只是会与原本早先手写的各个重复定义一样执行。单态化的过程,令到 Rust 的泛型特性,在运行时极为高效。 +那个通用的 `Option`,就被以编译器创建的具体定义给替换掉了。由于 Rust 会把通用代码,编译到指明了各个实例中类型的代码,因此咱们就不会为运用泛型而付出运行时代价。在代码运行时,其会如同原本咱们曾重复了那些定义的代码一样执行。单态化的过程,令到 Rust 的泛型在运行时极为高效。 ## 特质:定义共用行为