我有两个枚举,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
,这就是为什么我不想把两个枚举变成一个大枚举.