РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
86 of 1245 menu

Метод try_from

Метод try_from выполняет преобразование одного типа в другой с возможностью ошибки. В отличие от метода from, который всегда успешен, try_from возвращает Result: Ok при успешном преобразовании и Err, если преобразование невозможно. Параметром метод принимает значение, которое нужно преобразовать. Метод относится к трейту TryFrom и чаще всего вызывается через Type::try_from.

Синтаксис

Type::try_from(value)

Пример

Давайте преобразуем число 100 типа i32 в тип u8:

fn main() { let res = u8::try_from(100i32); println!("{:?}", res); }

Результат выполнения кода:

Ok(100)

Пример

Давайте попробуем преобразовать число 300 типа i32 в тип u8. Это невозможно, так как максимум для u8 равен 255:

fn main() { let res = u8::try_from(300i32); println!("{:?}", res); }

Результат выполнения кода:

Err(TryFromIntError(()))

Пример

Давайте обработаем результат преобразования с помощью match и выведем разные сообщения:

fn main() { let value = 300i32; match u8::try_from(value) { Ok(n) => println!("Success: {}", n), Err(_) => println!("Conversion failed"), } }

Результат выполнения кода:

"Conversion failed"

Пример

Давайте преобразуем срез чисел типа i32 в массив [i32; 5]:

fn main() { let slice: &[i32] = &[1, 2, 3, 4, 5]; let res = <[i32; 5]>::try_from(slice); println!("{:?}", res); }

Результат выполнения кода:

Ok([1, 2, 3, 4, 5])

Смотрите также

  • трейт TryFrom,
    который определяет метод try_from
  • трейт TryInto,
    который предоставляет обратное преобразование с проверкой
  • трейт From,
    который выполняет безошибочное преобразование
  • трейт Into,
    который предоставляет обратное безошибочное преобразование
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить