Rust中如何指定where子句实现类型引用的转换?
问题解答
你需要在where子句中填写 Type: Trait。
原因说明
Rust中,当类型Type实现了trait Trait时,&Type可以被隐式强制转换为&dyn Trait(前提是Trait满足对象安全——你的示例里TestTrait没有关联类型或非对象安全的方法,符合要求)。编译器会自动完成这个引用转换,不需要额外实现From、AsRef等trait。
完整代码示例
trait TestTrait {} struct TestStruct {} impl TestTrait for TestStruct {} fn test<Trait: ?Sized, Type>(object: &Type) -> &Trait where Type: Trait { object } fn call_test() { let object = TestStruct{}; let t = test::<dyn TestTrait, TestStruct>(&object); }
内容的提问来源于stack exchange,提问作者chila
相关产品推荐
相关产品推荐

