我有两个枚举类型,其中
我想从同一个函数返回这两种类型的值,将它们视为
NormalColour
和BoldColour
都实现了Colour
特性。它们包含Blue
、BoldGreen
等值。我想从同一个函数返回这两种类型的值,将它们视为
Colour
值,在结果上调用paint
函数,但我无法强制Rust编译器为我完成这个过程。我希望能够像这样编写代码:pub trait Colour {
fn paint(&self, input: &str) -> String;
}
fn file_colour(stat: &io::FileStat) -> Colour {
if stat.kind == io::TypeDirectory {
Blue
} else if stat.perm & io::UserExecute == io::UserExecute {
BoldGreen
} else {
White
}
}
为使函数起作用,我需要返回什么类型?
最终,我想让更多的类型实现Colour
,这就是为什么我不想把这两个枚举合并成一个大枚举的原因。
~Colour
的返回类型;现在,它是Box<Colour>
。实际上,&'static Colour
也可能起作用。 - Chris Morgan