Rust の const()
Nilesh Katuwal
2022年6月7日
この記事では、Rust の const()
とは何かを学びます。
Rust の const()
プログラム全体で特定の値が複数回使用される場合、それを繰り返しコピーするのは面倒な場合があります。さらに、関数から関数に渡される変数にすることが常に可能または望ましいとは限りません。
const
キーワードは、このような場合にコードを複製するための便利な代替手段です。
Rust には、グローバルを含む任意のスコープで宣言できる 2 種類の定数があります。どちらもタイプの明示的な注釈が必要です。
-
const
- 変更できない値(通常の場合) -
static
- 静的な存続期間を持つ可変変数静的寿命は推定されるため、指定する必要はありません。可変静的変数へのアクセスまたは変更は安全ではありません。
例:
fn main() {
const THE_LIMIT:i32 = 120;
const NUM:f32 = 3.14;
println!("The limit of user is {}", THE_LIMIT);
println!("The value of num is {}",NUM);
}
出力:
The limit of user is 120
The value of num is 3.14
定数は明示的に入力する必要があります。let
とは異なり、コンパイラにタイプを決定させることはできません。任意の定数値を const
で定義できます。これは、定数に含めることが理にかなっているものの大部分です。たとえば、const
はファイルに適用できません。
const
アイテムと static
アイテムの驚くべき類似性により、それぞれをいつ使用すべきかが不確実になります。定数は使用するたびに傾斜しているため、const
名をその値に置き換えるだけで使用できます。
対照的に、静的変数は、すべてのアクセスで共有される単一のメモリアドレスを指します。これは、定数とは異なり、デストラクタを持つことができず、コードベース全体で単一の値として動作することを意味します。
const T
および mut T.
で見られるように、const
キーワードも生のポインターなしで使用されます。
例:
static LANGUAGE: &str = "Rust";
const LIMIT: i32 = 10;
fn is_big(n: i32) -> bool {
n > LIMIT
}
fn main() {
let n = 16;
println!("{} is a programming language.", LANGUAGE);
println!("The limit is {}", LIMIT);
println!("{} is {}", n, if is_big(n) { "large" } else { "small" });
}
出力:
Rust is a programming language.
The limit is 10
16 is large