定数とstatic変数の違い
Rustでは、定数とstatic
変数はどちらも固定された値を持つことができますが、それぞれに異なる特性と用途があります。
定数(const
)
定数は、const
キーワードを使用して宣言されます。定数はコンパイル時に評価され、プログラムの実行中に変更することはできません。
特徴
- コンパイル時に評価:定数の値はコンパイル時に決定されます。
- 変更不可:一度設定された値は変更できません。
- スコープ:定数は宣言されたスコープ内でのみ有効です。
static変数 (static
)
static変数は、static
キーワードを使用して宣言されます。static変数はプログラムのライフタイム全体で存在し、グローバルにアクセス可能です。
特徴
- プログラムのライフタイム全体で存在:static変数はプログラムが終了するまでメモリに保持されます。
- グローバルアクセス:static変数はプログラム全体からアクセス可能です。
- 可変性:static変数はmutキーワードを使用して可変にすることができますが、その場合はunsafeブロック内で操作する必要があります。
定数に割り当てられた値はコンパイル時にインラインに展開されるそうです。 一方で、static変数はインラインに展開されず、 static変数を使用する関数内などから値を参照されるようです。 仮に、割り当てる値のメモリ量が大きかったり、プログラム内に1つしか存在しないように値を保持したい場合は、 static変数を用いる方が良いと理解しました。