Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Приведення

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 для використання у якості індексу.