В Rust не принято возвращать из функций "чистый" тип, обычно для этого используется перечисление enum. Если говорить о стандартных библиотеках Rust то чаще всего возвращается
pub enum Option<T> {
Some(T),
None,
}
Предполагается, что значение может отсутствовать.
Или
pub enum Result<T, E> {
Ok(T),
Err(E),
}
для возвращения конкретного результата или ошибки.
Встречаются и другие варианты, в зависимости от того, что должно быть возвращено.
Пример с Option
fn main() {
let num = vec![1, 2, 3, -10, 143];
// Возвращает Option<&i32> по индексу
let res = num.get(4);.
match res {
Some(value) => println!("Нашли: {}", value),
None => println!("Не нашли"),
}
}
Пример с Result. Кто читал предыдущие посты подобные примеры уже неоднократно встречались.
use std::io;
fn main() {
let mut input = String::new(); // строка для ввода
println!("Введите ваше имя:");.
// ввод с клавиатуры с проверкой ошибки с дописывания строки input
match io::stdin().read_line(&mut input) {
Ok(n) => {
println!("Всего {} байтов", n);
let mut input = "Привет ".to_string() + &input.trim() + &"!".to_string();
println!("{}", input);
}
Err(error) => {
println!("Ошибка при чтении: {}", error);
}
}
}
Обработка с оператором match предпочтительна, но не обязательна. В дальнейшем расскажу о других возможностях.
Описанные выше особенности языка rust входит в его основы. Это следует усвоить.
pub enum Option<T> {
Some(T),
None,
}
Предполагается, что значение может отсутствовать.
Или
pub enum Result<T, E> {
Ok(T),
Err(E),
}
для возвращения конкретного результата или ошибки.
Встречаются и другие варианты, в зависимости от того, что должно быть возвращено.
Пример с Option
fn main() {
let num = vec![1, 2, 3, -10, 143];
// Возвращает Option<&i32> по индексу
let res = num.get(4);.
match res {
Some(value) => println!("Нашли: {}", value),
None => println!("Не нашли"),
}
}
Пример с Result. Кто читал предыдущие посты подобные примеры уже неоднократно встречались.
use std::io;
fn main() {
let mut input = String::new(); // строка для ввода
println!("Введите ваше имя:");.
// ввод с клавиатуры с проверкой ошибки с дописывания строки input
match io::stdin().read_line(&mut input) {
Ok(n) => {
println!("Всего {} байтов", n);
let mut input = "Привет ".to_string() + &input.trim() + &"!".to_string();
println!("{}", input);
}
Err(error) => {
println!("Ошибка при чтении: {}", error);
}
}
}
Обработка с оператором match предпочтительна, но не обязательна. В дальнейшем расскажу о других возможностях.
Описанные выше особенности языка rust входит в его основы. Это следует усвоить.
Просмотры: 33