Как реализовать множ. выбор match по введенному числу?
Решил попробовать rust. Не могу понять как реализовать множ.выбор match по введенному числу. VSCode подсвечивает красным цифры. Смотрел примеры в интернете, но ничего не нашел для моей задачи.
let mut mnum: i32;
let mut mnum = String::new();
io::stdin().read_line(&mut mnum).expect("err");
match mnum {
1 => func::messages::message_functions::hello(),
2 => func::messages::message_functions::work(),
3 => func::messages::message_functions::bye(),
4 => test1::Func::test(),
_=> panic!(),
}
/**Новая версия, запустилась, но проблемы с логикой не вызывает функции */
let mut mnum = String::new();
let mnum = io::stdin().read_line(&mut mnum).expect("err");
match &mnum {
1 => func::messages::message_functions:::hello(),
2 => func::messages::message_functions::work(),
3 => func::messages::message_functions::bye(),
4 => test1::Func::test(),
_ => {
panic!("Ошибка: ");
}
}
после ввода выдает ошибку. непонятно, что не так. Эта простая задача для других языков. Если переменную инициализировать в коде то при запуске все работает. Пример рабочего кода:
let mut mnum = String::new();
let mut mnum: i32 = 1;
match mnum {
1 => func::messages::message_functions::hello(),
2 => func::messages::message_functions::work(),
3 => func::messages::message_functions::bye(),
4 => test1::Func::test(),
_=> panic!(),
}
Нужно чтобы число вводилось (т.е.выбор меню и вызов функции из тела match) с командной строки.
Ответы (1 шт):
Автор решения: U255
→ Ссылка
разобрался надо еще один match с приведением в число:
let mut mnum = String::new();
io::stdin().read_line(&mut mnum).expect("err");
let mnum:u32 = match mnum.trim().parse() {
Ok(mnum) => mnum,
Err(_) => panic!()
};
match mnum {
1 => func::messages::message_functions::hello(),
2 => func::messages::message_functions::work(),
3 => func::messages::message_functions::bye(),
4 => test1::Func::test(),
_=> panic!(),
}