From e739c354ec118584616e30f4a5e0972403416840 Mon Sep 17 00:00:00 2001 From: sunface Date: Mon, 17 Jan 2022 17:21:12 +0800 Subject: [PATCH] =?UTF-8?q?update=E7=89=B9=E5=BE=81=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book/contents/basic/trait/trait-object.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/contents/basic/trait/trait-object.md b/book/contents/basic/trait/trait-object.md index f9dbaa62..fdfc504d 100644 --- a/book/contents/basic/trait/trait-object.md +++ b/book/contents/basic/trait/trait-object.md @@ -231,7 +231,7 @@ fn main() { #### &dyn和Box\的区别 前文提到, `&dyn` 和 `Box` 都可以用于特征对象,因此在功能上 `&dyn` 和 `Box` 几乎没有区别,唯一的区别就是:`&dyn` 减少了一次指针调用。 -因为 `Box` 是一个宽指针(`fat pointer`),它内部保存一个指针指向 `vtable`,然后通过 `vtable` 查询到具体的函数指针,最后进行调用。 +因为 `Box` 是一个宽指针(`fat pointer`),它需要一次额外的解引用后,才能获取到指向`vtable`的指针,然后再通过该指针访问 `vtable` 查询到具体的函数指针,最后进行调用。 所以,如果你在乎性能,又想使用特征对象简化代码,可以优先考虑 `&dyn`。