например, можно в енамах объявлять свойства, которое присваивается каждому конкретному перечислению, и затем использовать его (что-то типо такого):
enum BinaryOperation {
Plus((a, b) -> a + b),
Minus((a, b) -> a - b),
Multiply((a, b) -> a * b),
Divide((a, b) -> a / b);
int apply(int a, int b) { return this.fn.apply(a, b); }
...
}
В расте нашел только такой способ:
enum Operation {
Plus,
Minus,
Multiply,
Divide,
}
impl Operation {
fn apply(&self, a: i32, b: i32) -> i32 {
match &self {
Plus => a + b,
Minus => a - b,
Multiply => a * b,
Divide => a / b
}
}
}
т.е. с первого взгляда приходится каждый раз матчиться по операции, что по сути является накладными ресурсами. Вопрос - оптимизирует ли это компилятор?
Глянь в болте
С каких пор проверка тэга енума является чем-то накладным?
Обсуждают сегодня