【发布时间】:2022-11-20 18:40:57
【问题描述】:
我有一个可以存储拥有或借用的枚举,如下所示。它类似于std::borrow::Cow,但实际上并不提供写时克隆功能。
use std::borrow::Borrow;
enum RefOrOwned<'a, B, T>
where
B: ?Sized,
T: Borrow<B>,
{
Ref(&'a B),
Owned(T),
}
它可以这样使用:
fn main() {
let str = RefOrOwned::<str, String>::Ref("Hi :D");
}
我希望编译器为我推断出 T 类型。我想到了使用std::borrow::ToOwned trait:如果B: ToOwned<Owned = T>,那么T应该默认设置为B::Owned。这可能吗?
【问题讨论】: