我需要表达对某个类型参数的引用可以转换为对另一个类型参数的引用。
示例:
trait TestTrait {}
struct TestStruct {}
impl TestTrait for TestStruct {}
fn test<Trait: ?Sized, Type>(object: &Type) -> &Trait
where ...
{
object
}
fn call_test()
{
let object = TestStruct{};
let t = test::<dyn TestTrait, TestStruct>(&object);
}
我需要在where子句中输入什么?
编辑:我不想实现From、AsRef等。我已经考虑过了。
2条答案
按热度按时间g6ll5ycj1#
在nightly上,您可以使用
Unsize
:请注意,这也会接受其他胁迫型转,例如数组到片段。
在稳定方面,我不认为有办法做到这一点。
ifmq2ha22#
也许你想要
std::convert::AsRef
?但请注意,不能将traits作为类型参数。