Метод map класса Result
Метод map преобразует успешное значение Ok
типа Result, применяя к нему указанную функцию.
Если исходный результат равен Err, то метод
возвращает его без изменений. Параметром метод принимает
замыкание или функцию, которая получает значение из
Ok и возвращает новое значение.
Синтаксис
result.map(op)
Пример
Давайте преобразуем успешное значение Ok(5),
умножив его на два:
fn main()
{
let res = Ok::<i32, &str>(5).map(|x| x * 2);
println!("{:?}", res);
}
Результат выполнения кода:
Ok(10)
Пример
Давайте применим метод map к значению
Err("error") и убедимся, что ошибка
остаётся без изменений:
fn main()
{
let res = Err::<i32, &str>("error").map(|x| x * 2);
println!("{:?}", res);
}
Результат выполнения кода:
Err("error")
Пример
Давайте преобразуем строку в её длину, используя
метод map:
fn main()
{
let res = Ok::<&str, &str>("abcde").map(|s| s.len());
println!("{:?}", res);
}
Результат выполнения кода:
Ok(5)