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 _クレート_で定義されています。詳細については、 モジュールクレートを参照してください。