2
锈色程序,我其中我想打印一个数字,或数字的管分隔矢量,因此该简单的包装枚举的使用情况:匹配参数化类型中锈病
pub enum OneOrMore<T> {
One(T),
More(Vec<T>)
}
其工作正常。但后来我想格式逻辑搬进OneOrMore
类型,所以我尝试:
impl<T: Show> Show for OneOrMore<T> {
fn fmt(&self, f: &mut Formatter) -> Result {
match self {
One(x) => x.fmt(f),
More(xs) => /* vec_join(xs, "|") or whatever */,
}
}
}
由于impl
是参数,它期待One<T>
但我的代码描述One<_>
。问题是我无法弄清楚在哪里把类型参数放在匹配武器里面。 syntax guide未给出参数化类型匹配的示例,fmt
本身不接受类型参数,并且所有盲目猜测(One(x: T)
,One<T>(x)
等)都不是有效的Rust。任何想法,我应该指出的比赛武器的类型?
谢谢,我这次完全误解了编译器错误。 – bees 2014-12-04 04:37:29
顺便说一下,标准的锈风格是'match * foo {Bar =>()}',而不是'match foo {&Bar =>()}',尽管如果匹配的表达式是一个元组,如'match(self,other){(&Foo,&Foo)=>()}'。 – 2014-12-04 06:55:20