https://doc.rust-lang.org/std/borrow/trait.ToOwned.html
这是什么意思?
但克隆仅适用于从 &T 到 T。
您能解释一下并举个例子吗?
Clone
是从共享引用到拥有版本的方法。考虑例如Rc
。<Rc as Clone>::clone()
获取&Rc
并产生Rc
.
现在假设您想要 impl Clone
for str
。该clone()
方法需要 take&str
和 return str
。但你不能return str
,因为它没有大小 - 编译器不知道要节省多少内存。
相反,它需要返回String
的拥有版本str
。但它不能使用Clone
,因为Clone
将返回类型硬编码为等于输入类型。
这就是空白的ToOwned
填补。对于共享版本和拥有版本不是同一类型的情况,它提供了一种从共享版本转到拥有版本的方法。
ToOwned
因此是一个超集Clone
(事实上,每种类型的实现也通过这个总体实现Clone
来实现)。ToOwned
归档时间: |
|
查看次数: |
105 次 |
最近记录: |