Преобразование в i16
Преобразование в i16 переводит значение
в знаковое целое число размером 16 бит.
Диапазон допустимых значений для i16
составляет от -32768 до 32767.
Преобразование может выполняться как с помощью
оператора as, так и с помощью методов
try_into или from.
При использовании оператора as
преобразование происходит без проверки диапазона,
а при использовании try_into -
с проверкой и возвратом результата типа Result.
Синтаксис
let res = value as i16;
let res: Result<i16, _> = value.try_into();
Пример
Давайте преобразуем число типа i32
в i16 с помощью оператора as:
fn main()
{
let num: i32 = 12345;
let res = num as i16;
println!("{}", res);
}
Результат выполнения кода:
12345
Пример
Давайте преобразуем число типа i32,
которое выходит за пределы диапазона i16,
с помощью оператора as:
fn main()
{
let num: i32 = 100000;
let res = num as i16;
println!("{}", res);
}
Результат выполнения кода:
-31072
Пример
Давайте преобразуем число типа i32
в i16 с помощью метода try_into:
use std::convert::TryInto;
fn main()
{
let num: i32 = 12345;
let res: i16 = num.try_into().unwrap();
println!("{}", res);
}
Результат выполнения кода:
12345
Пример
Давайте попробуем преобразовать число типа i32,
которое выходит за пределы диапазона i16,
с помощью метода try_into:
use std::convert::TryInto;
fn main()
{
let num: i32 = 100000;
let res: Result<i16, _> = num.try_into();
println!("{:?}", res);
}
Результат выполнения кода:
Err(TryFromIntError(()))