对于实现了CoerceUnsized特质的类型可以在两个类型 (暂时称为T, U)间进行尺寸擦除类型转换 (unsizing coercion ),最常用的有从 &T -> &U, Box 到 Box等等。类型转换的场景 ( coercion site) 简单说就是转换目标有类型标注的情况,包括let上的类型标注,函数参数的标注,返回值的标注,as表达式等等。 特质对象的语法是 dyn PrincipalTrait [+ AutoTrait]" [+ 'lifetime]" 或 dyn AutoTrait [+ AutoTrait ... OSDD-2 is characterized by identity alteration due to brainwashing, programming, torture, thought reform, or otherwise coercion -based dissociation. Examples include being indoctrinated into a cult, programming, being held captive, etc. 结论是: 由于println!中只需要获取变量的不可变引用就可以了,因此不发生所有权转移。 更深入一下,Rust中哪些类型在什么时机会发生所有权转移呢,这是值得深入总结的问题。 引子 先从一个例子说起,看如下代码: The value of &T is forced to be converted to the value of &U. (deref coercion ). T implements all the (immutable) methods of U. The beauty of Deref is that it enhances the Rust development experience. A typical example from the standard library is that Vec shares all the methods of slice by implemented Deref.