struct A;
struct PropA;
struct B;
struct PropB;
trait AB{
type prop;
fn a(&self) -> ();
fn b(&self, p: Self::prop) -> ();
}
impl AB for A{
type prop = PropA;
fn a(&self)->(){}
fn b(&self, p: Self::prop) -> (){}
}
impl AB for B{
type prop = PropB;
fn a(&self)->(){}
fn b(&self, p: Self::prop) -> (){}
}
fn get_a_or_b(s: &str) -> Option<Box<dyn AB<prop=_>>>{
match s{
"a" => Some(Box::new(A)),
"b" => Some(Box::new(B)),
_=> None
}
}
根据字符串输入,我返回两个不同的结构体A
&B
。
当使用占位符指定关联类型时,出现了类型占位符“_”不允许在项目签名中的类型中
错误提示。
a_or_b.a()
,那么我就需要写重复的匹配分支,我想我可以使用一个宏来简化。 - Slim Shady