From 1422efb0ba474a833eb3b04fa4a238fa57d00389 Mon Sep 17 00:00:00 2001 From: xieyu567 Date: Mon, 27 Dec 2021 21:15:37 +0800 Subject: [PATCH] =?UTF-8?q?2.8.2=20=E9=94=99=E5=AD=97=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- book-contents/basic/trait/trait.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book-contents/basic/trait/trait.md b/book-contents/basic/trait/trait.md index 15999f31..85543f73 100644 --- a/book-contents/basic/trait/trait.md +++ b/book-contents/basic/trait/trait.md @@ -378,7 +378,7 @@ fn main() { } ``` -如果并不希望限制 `largest` 函数只能用于实现了 `Copy` 特征的类型,我们可以在 `T` 的特征约束中指定 [`Clone`特征](../ownership/ownership.md#克隆(深拷贝)) 而不是 `Copy`特征。并克隆`list`中国呢的每一个值使得 `largest` 函数拥有其所有权。使用 `clone` 函数意味着对于类似 String 这样拥有堆上数据的类型,会潜在的分配更多堆上空间,而堆分配在涉及大量数据时可能会相当缓慢。 +如果并不希望限制 `largest` 函数只能用于实现了 `Copy` 特征的类型,我们可以在 `T` 的特征约束中指定 [`Clone`特征](../ownership/ownership.md#克隆(深拷贝)) 而不是 `Copy`特征。并克隆`list`中的每一个值使得 `largest` 函数拥有其所有权。使用 `clone` 函数意味着对于类似 String 这样拥有堆上数据的类型,会潜在的分配更多堆上空间,而堆分配在涉及大量数据时可能会相当缓慢。 另一种 `largest` 的实现方式是返回在 `list` 中 `T` 值的引用。如果我们将函数返回值从 `T` 改为 `&T` 并改变函数体使其能够返回一个引用,我们将不需要任何 `Clone` 或 `Copy` 的特征约束而且也不会有任何的堆分配。尝试自己实现这种替代解决方式吧!