Сделать enum чуть полезнее, чтобы можно было спокойно получать значение, зная какое значение имеет энумерат.
Данная вещь будет полезна при создании обработчика событий браузера, написании игровых движков и там, где нужно зная какое значение имеет энумерат, получить значение.
Как в Rust'е на данный момент:
enum DayTime{
Morning(String),
Evening(String)
}
fn main(){
//получили откуда-то значение var
match var {
Morning(a) => {/* что-то */},
Evening(b) => {/* что-то */}
}
}
Как это выглядело бы в C++:
struct Data{
enum class Types{
WebErrorCode,
LoadedTime
};
Types t;
std::variant<int,float> values;
};
int main() {
//взяли откуда-то экземпляр типа `Data`
if (d.t == Data::Types::WebErrorCode){
//Тут дальше что-то делаете со значениями
}
}
Как хотелось бы в C++:
enum Data{
WebErrorCode(int),
LoadedTime(float)
};
int main(){
//откуда-то получили данные
if (D == Data::WebErrorCode){
int res = std::get<Data::WebErrorCode>(D); //Если попробовать получить Data::LoadedTime, то кидало бы ошибку компиляции.
//Дальше что-то делаете с этим.
}
}
Также можно расширить switch, которым никто особо не пользуется, до match как в первом примере.
Сделать enum чуть полезнее, чтобы можно было спокойно получать значение, зная какое значение имеет энумерат.
Данная вещь будет полезна при создании обработчика событий браузера, написании игровых движков и там, где нужно зная какое значение имеет энумерат, получить значение.
Как в Rust'е на данный момент:
Как это выглядело бы в C++:
Как хотелось бы в C++:
Также можно расширить switch, которым никто особо не пользуется, до match как в первом примере.