Класс Option
Класс Option - это перечисление из стандартной библиотеки Rust, которое используется для представления значения, которое может присутствовать или отсутствовать. Он имеет два варианта: Some, содержащий значение, и None, обозначающий отсутствие значения. Класс Option часто применяется для безопасной работы с данными, которые могут быть не заданы, вместо использования null, как в других языках программирования.
Вариант Some принимает одно значение любого типа, а вариант None не принимает параметров. Благодаря этому компилятор Rust заставляет программиста явно обрабатывать оба случая, что помогает избежать ошибок времени выполнения.
Синтаксис
enum Option<T>
{
Some(T),
None,
}
Пример
Давайте создадим значение Option с некоторым числом и выведем его на экран:
fn main()
{
let res: Option<i32> = Some(12345);
println!("{:?}", res);
}
Результат выполнения кода:
Some(12345)
Пример
Давайте создадим значение Option без значения и выведем его на экран:
fn main()
{
let res: Option<i32> = None;
println!("{:?}", res);
}
Результат выполнения кода:
None
Пример
Давайте проверим, содержит ли значение Option некоторое число, с помощью метода is_some:
fn main()
{
let res: Option<i32> = Some(12345);
println!("{}", res.is_some());
}
Результат выполнения кода:
true
Пример
Давайте проверим, что значение Option не содержит числа, с помощью метода is_none:
fn main()
{
let res: Option<i32> = None;
println!("{}", res.is_none());
}
Результат выполнения кода:
true
Пример
Давайте извлечём значение из Option с помощью метода unwrap:
fn main()
{
let res: Option<i32> = Some(12345);
println!("{}", res.unwrap());
}
Результат выполнения кода:
12345
Пример
Давайте преобразуем значение внутри Option с помощью метода map:
fn main()
{
let res: Option<i32> = Some(12345);
let res = res.map(|x| x + 1);
println!("{:?}", res);
}
Результат выполнения кода:
Some(12346)