根据标准库示例,我的理解是:
当函数完全吸收所有权并输出另一种类型时,使用into_约定,例如into_iter()。这个理解正确吗?
真正令人困惑的是as_和to_之间的区别。
似乎to_owned()中的to_接受一个类型的引用并输出一个新的相关类型(像类型强制转换),而to_string()接受一个类型的引用并输出一个新类型(例如类型转换)。
但是,as_在as_ptr中也似乎起到了类型强制转换的作用。除了as_ptr或as_mut之外,我找不到其他任何例子。
有人能否解释一下我们需要使用特定命名约定的确切情况,并举一个超出标准库使用范围的现实示例?
to_owned和to_string不是类型强制转换。它们通常等同于clone,会深度复制所涉及的对象,或者分配内存。 - PitaJto_owned的情况下,to_听起来像类型强制转换,实际上并不是。这就是混淆的地方。API指南表帮了很大的忙。 - manikawnth