Приведення

Rust не має неявних перетворень типів, але підтримує явні приведення за допомогою as. Вони зазвичай відповідають семантиці C, де вони визначені.

fn main() {
    let value: i64 = 1000;
    println!("як u16: {}", value as u16);
    println!("як i16: {}", value as i16);
    println!("як u8: {}", value as u8);
}

Результати функції as завжди визначені у Rust і є стабільними на всіх платформах. Це може не збігатися з вашою інтуїцією щодо зміни знаку або приведення до меншого типу - зверніться до документації та коментарів для уточнення.

Приведення за допомогою as є відносно гнучким інструментом, який легко використовувати неправильно, і може бути джерелом малопомітних помилок, оскільки майбутні роботи супроводження змінюють типи, які використовуються, або діапазони значень у типах. Приведення до типу найкраще використовувати лише тоді, коли потрібно вказати безумовне усічення (наприклад, виділити молодші 32 біти u64 за допомогою as u32, незалежно від того, що було у старших бітах).

Для безпомилкового приведення (наприклад, u32 до u64) краще використовувати From або Into замість as, щоб переконатися, що приведення дійсно є безпомилковими. Для помилкових приведень доступні TryFrom і TryInto, якщо ви хочете обробити приведення, які відрізняються від тих, які не підходять.

This slide should take about 5 minutes.

Подумайте про перерву після цього слайда.

Оператор as подібний до статичного приведення у C++. Використання as у випадках, коли дані може бути втрачено, зазвичай не рекомендується або, принаймні, заслуговує на пояснювальний коментар.

Це типовий випадок приведення цілих чисел до usize для використання у якості індексу.