From 429cfa4222d859ba92de10025f684f1f84f9da0b Mon Sep 17 00:00:00 2001 From: Yunli Liu <994605959@qq.com> Date: Sun, 9 Jan 2022 17:13:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20runtime=20penalty=20=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E6=97=B6=E6=8D=9F=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The number of times that Deref::deref needs to be inserted is resolved at compile time, so there is no runtime penalty for taking advantage of deref coercion! 这些解析都发生在编译时,所以利用 Deref 强制转换并没有运行时损耗! --- src/ch15-02-deref.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch15-02-deref.md b/src/ch15-02-deref.md index 59021c6..857ffec 100644 --- a/src/ch15-02-deref.md +++ b/src/ch15-02-deref.md @@ -246,7 +246,7 @@ fn main() { `(*m)` 将 `MyBox` 解引用为 `String`。接着 `&` 和 `[..]` 获取了整个 `String` 的字符串 slice 来匹配 `hello` 的签名。没有 Deref 强制转换所有这些符号混在一起将更难以读写和理解。Deref 强制转换使得 Rust 自动的帮我们处理这些转换。 -当所涉及到的类型定义了 `Deref` trait,Rust 会分析这些类型并使用任意多次 `Deref::deref` 调用以获得匹配参数的类型。这些解析都发生在编译时,所以利用 Deref 强制转换并没有运行时惩罚! +当所涉及到的类型定义了 `Deref` trait,Rust 会分析这些类型并使用任意多次 `Deref::deref` 调用以获得匹配参数的类型。这些解析都发生在编译时,所以利用 Deref 强制转换并没有运行时损耗! ### Deref 强制转换如何与可变性交互