2.2.1.10 To
10-To — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
2.2.1.10 To
接受借用值并创建拥有所有权值的函数前缀。
| |
在不消费
self的情况下创建新的拥有所有权值、并暗示类型转换的方法,以to开头命名。以 “to” 开头的方法返回不同类型,并强烈暗示非平凡的类型转换,甚至是数据变换。例如
str::to_uppercase。“to” 方法最常接受
&self。但若类型实现了Copy,也可按值接受self:这也确保转换方法调用不会消费self。若想定义消费源值的方法,使用 “into” 命名模式。
也见于转换原始类型字节序,或复制并暴露 newtype 值的函数。
延伸阅读
问问学员:
to_owned与into_owned有何区别?答案:
to_owned出现在&str这类引用值上,而into_owned出现在持有引用类型的拥有所有权值上,如Cow(copy-on-write)。像
Cow这样的类型可以在拥有所有权的同时包含借用的引用,因此消费Cow的拥有所有权值,以创建其所持引用类型的拥有所有权值。