Преобразование в i8
Преобразование в i8 - это приведение значения
к знаковому целому числу размером 8 бит. Диапазон
значений i8 составляет от -128
до 127. Преобразование может выполняться
с помощью оператора as, метода try_into
или типажа From. Параметром в каждом случае
выступает исходное значение, которое нужно преобразовать
в i8.
Синтаксис
let res = value as i8;
let res: Result<i8, _> = value.try_into();
let res = i8::from(value);
Пример
Давайте преобразуем число 42 типа i32
в i8 с помощью оператора as:
fn main()
{
let value: i32 = 42;
let res = value as i8;
println!("{}", res);
}
Результат выполнения кода:
42
Пример
Давайте преобразуем число 300 типа i32
в i8. Так как 300 выходит за пределы
диапазона i8, оператор as выполнит
усечение:
fn main()
{
let value: i32 = 300;
let res = value as i8;
println!("{}", res);
}
Результат выполнения кода:
44
Пример
Давайте преобразуем число 300 типа i32
в i8 с помощью метода try_into.
Этот метод вернёт ошибку, если значение не помещается
в диапазон i8:
use std::convert::TryInto;
fn main()
{
let value: i32 = 300;
let res: Result<i8, _> = value.try_into();
println!("{:?}", res);
}
Результат выполнения кода:
Err(TryFromIntError(()))
Пример
Давайте преобразуем число 42 типа i32
в i8 с помощью метода try_into.
Так как значение помещается в диапазон i8,
преобразование пройдёт успешно:
use std::convert::TryInto;
fn main()
{
let value: i32 = 42;
let res: Result<i8, _> = value.try_into();
println!("{:?}", res);
}
Результат выполнения кода:
Ok(42)
Пример
Давайте преобразуем число 42 типа i32
в i8 с помощью метода from типажа
From:
fn main()
{
let value: i32 = 42;
let res = i8::from(value);
println!("{}", res);
}
Результат выполнения кода:
42