Rust — использование Optionenum для обработки ошибок
В Rust при написании кода основное внимание уделяется производительности, безопасности и параллелизму. Он специально использует перечисления, такие как Option<T> и Result<T>, для обработки ошибок. Тип параметра в Rust обычно обозначает значения параметров, которые имеют два атрибута: Some и None. Тип параметра создает поле i32 для использования внутренних значений.
Параметры <T> используют совпадения с образцом для запроса о том, присутствует ли значение или нет, и в случае его отсутствия ссылается на значение, допускающее значение NULL (None). Всякий раз, когда есть совпадение с образцом, компилятор ржавчины присваивает ячейке значение, и если таковых нет, то ячейка пуста.
Пример 1:
Rust
#![allow(unused)] fn main() { let matching_digit = Some(100); fn processing_digit(i: i32) { println!( "Inside Processing digit function!" ); } fn processing_other_digit(i: i32) { println!( "Inside Processing Other digit function!" ); } let msg = match matching_digit { Some(x) if x < 20 => processing_digit(x), Some(x) => processing_digit(x), None => panic!(), }; } |
Выход:
Объяснение:
В этом примере мы использовали переменную с именем match_digit, которая содержит значение, переданное функцией Some(). Цифра обработки функции, а также цифра функции other_processing принимают 32-битные целые числа. Теперь мы передаем значение 100 и назначаем условие одному из параметров Some, что если значение меньше 20, оно совпадет и будет вызвана функция processing_digit, а если ничего не передано, Rust будет использовать None, что вызовет панику.
Пример 2:
Rust
fn find(search: &str, variable: char ) -> Option<usize> {search.find(variable) } fn main() { let var_name = "GeeksforGeeks" ; match find(var_name, "G" ) { None => println!( "Letter not found" ), Some(_i) => println!( "Letter found" ), } } |
Выход:
Объяснение:
В этом примере мы сначала находим букву «G» и с помощью Some() проверяем, присутствует ли значение или нет. Если он присутствует, то var_name соответствует функции поиска, и мы печатаем найденную букву в выводе.
Точно так же, для другого примера, если мы будем искать букву «Z», мы ее не найдем.
Пример 3:
Rust
fn find(search: &str, variable: char ) -> Option<usize> { search.find(variable) } fn main() { let var_name = "GeeksforGeeks" ; match find(var_name, "Z" ) { None => println!( "Letter not found" ), Some(_i) => println!( "Letter found" ), } } |
Выход: