考虑以下 MRE(正则表达式):
struct A {}
struct B {}
impl From<A> for B {
fn from(t: A) -> B { B {} }
}
是否有可能自动实现 From<&A> for B
?
考虑以下 MRE(正则表达式):
struct A {}
struct B {}
impl From<A> for B {
fn from(t: A) -> B { B {} }
}
是否有可能自动实现 From<&A> for B
?
impl From<&A> for B {
fn from(a: &A) -> B {
unimplemented!("implement me")
}
}
From
的唯一通用实现是 impl<T> From<T> for T
(即恒等转换),没有可用于该特征的 #[derive]
宏(用于其他“自动”实现),也没有我知道的其他宏(尽管如果你真的想要,你可能可以轻松地制作一个)。Str
,以及A=B=Str
。然后有impl From<A> for B
(也就是说,impl From<Str> for <Str>
),但是你怎么能写出这样的代码呢?fn from(t: &Str) -> Str
impl From<A> for B {
fn from(t: A) -> B { From::from(&t) }
}
目前还没有内置的方法来做到这一点(正如kmdreko的回复所说),但这是可能的。
如果添加一个 A:Clone
的要求,这也是有道理的。
Clone
?这将是从&T
转换的更常规方式。 - kmdreko