Я не могу избавиться от ошибки в этом коде:
#[derive(PartialEq, Copy, Clone)]
pub enum OperationMode {
ECB,
CBC { iv: [u8; 16] },
}
pub struct AES {
key: Vec<u8>,
nr: u8,
mode: OperationMode,
}
impl AES {
pub fn decrypt(&mut self, input: &Vec<u8>) {
match self.mode {
OperationMode::ECB => {},
OperationMode::CBC(_) => {},
};
}
}
Совпадение с шаблоном в конце функции decrypt
выдает ошибку:
error[E0532]: expected tuple struct/variant, found struct variant `OperationMode::CBC`
--> src/main.rs:17:13
|
17 | OperationMode::CBC(_) => {},
| ^^^^^^^^^^^^^^^^^^ did you mean `OperationMode::CBC { /* fields */ }`?
Он говорит мне посмотреть на вывод rustc --explain E0532
для справки, что я и сделал.
Они показывают этот пример неправильного кода:
enum State {
Succeeded,
Failed(String),
}
fn print_on_failure(state: &State) {
match *state {
// error: expected unit struct/variant or constant, found tuple
// variant `State::Failed`
State::Failed => println!("Failed"),
_ => ()
}
}
В этомНапример, ошибка возникает потому, что State::Failed
имеет поле, которое не соответствует.Это должно быть State::Failed(ref msg)
.
В моем случае я сопоставляю поле моего перечисления, потому что я делаю OperationMode::CBC(_)
.Почему происходит ошибка?