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

Літерали

Числові літерали можна анотувати типом, додавши тип як суфікс. Наприклад, щоб вказати, що літерал 42 має мати тип i32, напишіть 42i32.

Тип несуфіксованих числових літералів залежатиме від того, як їх використовують. Якщо немає жодного обмеження, компілятор використовуватиме i32 для цілих чисел і f64 для чисел із плаваючою комою.

fn main() {
    // Суфіксовані літерали, їхні типи відомі під час ініціалізації
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // Несуфіксовані літерали, їхні типи залежать від того, як їх використовують
    let i = 1;
    let f = 1.0;

    // `size_of_val` повертає розмір змінної в байтах
    println!("size of `x` in bytes: {}", std::mem::size_of_val(&x));
    println!("size of `y` in bytes: {}", std::mem::size_of_val(&y));
    println!("size of `z` in bytes: {}", std::mem::size_of_val(&z));
    println!("size of `i` in bytes: {}", std::mem::size_of_val(&i));
    println!("size of `f` in bytes: {}", std::mem::size_of_val(&f));
}

У попередньому коді використано кілька понять, які ще не було пояснено далі, ось коротке пояснення для нетерплячих читачів:

  • std::mem::size_of_val — це функція, але викликана за своїм повним шляхом. Код можна розділити на логічні одиниці, які називаються модулями. У цьому випадку функція size_of_val визначена в модулі mem, а модуль mem визначений у крейді std. Для докладнішої інформації дивіться модулі і крейти.