Rust by Example

3.3 定数

Rustには2種類の定数があり、いずれもグローバルスコープを含む任意のスコープで宣言することができます。また、いずれも型を明示しなくてはなりません。

  • const: 不変の値(通常はこちらを使用する)
  • static: スタティックなライフタイムを持つミュータブル(mut)な値

特別な例として、文字列("string")リテラルの場合があります。&'static str'staticのライフタイムを持つため、文字列は特に注意を払わなくてもstaticになります。他の型の場合は必ず'staticライフタイムを満たすことを明示しなくてはなりません。いずれにしろstaticを宣言するときはすべて明示しなくてはならないので、この違いは些細なものと感じられるでしょう。

// グローバル変数はあらゆるスコープの外で宣言します static LANGUAGE: &'static str = "Rust"; const THRESHOLD: i32 = 10; fn is_big(n: i32) -> bool { // 関数内から定数を参照 n > THRESHOLD } fn main() { let n = 16; // main 関数の中から定数を参照 println!("This is {}", LANGUAGE); println!("The threshold is {}", THRESHOLD); println!("{} is {}", n, if is_big(n) { "big" } else { "small" }); // エラー!`const`は変更できません。 THRESHOLD = 5; // FIXME ^ この行をコメントアウトしましょう }

See also:

const 及び static の RFC 'static ライフタイム