是否可以定義一個函式,它將任何列舉值作為引數,然后迭代型別?像這樣的偽代碼:
#[derive(Display)]
enum Difficulty {
Easy,
Middle,
Hard,
}
fn enum_as_radio_select<T: Enum Display>(selected: T) {
for enum_value in T::iter() {
let is_selected = enum_value == selected;
let text = enum_value.to_string();
add_radio_button(is_selected, text);
}
}
enum_as_radio_select(Difficulty::Easy);
uj5u.com熱心網友回復:
strum箱子有這個:(注意#[derive(EnumIter)]您需要激活該derive功能):
#[derive(strum::EnumIter, Display, PartialEq, Eq)]
enum Difficulty {
Easy,
Middle,
Hard,
}
fn enum_as_radio_select<T: Display strum::IntoEnumIterator PartialEq>(selected: T) {
for enum_value in T::iter() {
let is_selected = enum_value == selected;
let text = enum_value.to_string();
add_radio_button(is_selected, text);
}
}
enum_as_radio_select(Difficulty::Easy);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494533.html
下一篇:在Go中列印型別引數名稱
