Преобразование в u16
Преобразование в u16 - это приведение значения к типу
беззнакового 16-битного целого числа. Такой тип хранит значения
от 0 до 65535. Преобразование можно выполнить
с помощью оператора as, метода try_into,
метода from, а также через метод parse для строк.
Выбор способа зависит от того, нужно ли безопасное преобразование
с проверкой диапазона или достаточно простого приведения.
Синтаксис
let res: u16 = value as u16;
let res: Result<u16, _> = value.try_into();
let res: u16 = u16::from(value);
let res: Result<u16, _> = "12345".parse::<u16>();
Пример
Давайте преобразуем число типа u8 в u16
с помощью оператора as:
fn main()
{
let value: u8 = 200;
let res = value as u16;
println!("{}", res);
}
Результат выполнения кода:
200
Пример
Давайте преобразуем число типа i32 в u16
с помощью оператора as. Приведение отбрасывает
лишние биты:
fn main()
{
let value: i32 = 70000;
let res = value as u16;
println!("{}", res);
}
Результат выполнения кода:
4464
Пример
Давайте выполним безопасное преобразование из i32
в u16 с помощью метода try_into:
fn main()
{
let value: i32 = 12345;
let res: Result<u16, _> = value.try_into();
println!("{:?}", res);
}
Результат выполнения кода:
Ok(12345)
Пример
Давайте попробуем безопасно преобразовать слишком большое
число i32 в u16 с помощью метода try_into:
fn main()
{
let value: i32 = 70000;
let res: Result<u16, _> = value.try_into();
println!("{:?}", res);
}
Результат выполнения кода:
Err(TryFromIntError(()))
Пример
Давайте преобразуем число типа u8 в u16
с помощью метода from. Такое преобразование всегда
безопасно, так как u8 полностью помещается в u16:
fn main()
{
let value: u8 = 200;
let res = u16::from(value);
println!("{}", res);
}
Результат выполнения кода:
200
Пример
Давайте преобразуем строку "12345" в число типа
u16 с помощью метода parse:
fn main()
{
let res: Result<u16, _> = "12345".parse();
println!("{:?}", res);
}
Результат выполнения кода:
Ok(12345)
Пример
Давайте попробуем преобразовать строку "abcde"
в число типа u16 с помощью метода parse:
fn main()
{
let res: Result<u16, _> = "abcde".parse();
println!("{:?}", res);
}
Результат выполнения кода:
Err(ParseIntError { kind: InvalidDigit })