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

Трейт From

Трейт From используется для преобразования значения одного типа в значение другого типа. Он является частью модуля std::convert и реализует метод from, который принимает значение исходного типа и возвращает значение целевого типа. Трейт From обычно реализуют для типов, которые могут быть созданы из других типов без потери информации и без возможности ошибки.

Параметром метод from принимает значение, которое нужно преобразовать. Возвращает метод значение целевого типа. Трейт From автоматически предоставляет реализацию трейта Into, поэтому вместо вызова from часто можно использовать метод into.

Синтаксис

impl From<Source> for Target { fn from(value: Source) -> Target { // ... } }

Также трейт From можно вызывать через ассоциированную функцию:

Target::from(value)

Пример

Давайте преобразуем число типа i32 в число типа i64 с помощью метода from:

fn main() { let res: i64 = i64::from(12345); println!("{}", res); }

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

12345

Пример

Давайте преобразуем строку "abcde" в тип String с помощью метода from:

fn main() { let res = String::from("abcde"); println!("{}", res); }

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

"abcde"

Пример

Давайте реализуем трейт From для собственной структуры, чтобы создавать её из числа типа i32:

struct Number { value: i32, } impl From<i32> for Number { fn from(item: i32) -> Self { Number { value: item } } } fn main() { let res = Number::from(12345); println!("{}", res.value); }

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

12345

Пример

Так как трейт From автоматически даёт реализацию трейта Into, то для преобразования можно использовать метод into:

fn main() { let num: i32 = 12345; let res: i64 = num.into(); println!("{}", res); }

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

12345

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

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