lazy_staticを使用してランタイムでRustの定数を初期化する

lazy_staticを使用してRustの定数を初期化する

遅延初期化を使用して定数でない静的変数を定義する

Christian Lue氏による写真

プログラミングにおいて、コンパイル時に定数を初期化することは良い慣行であることは知られています。初期化のオーバーヘッドを減らすだけでなく、コンパイラが定数の値を事前に知っているため、コードを賢く最適化することが容易になります。

ただし、ランタイムでのみ利用可能な非定数の操作を実行するか、データを取得する必要があるため、すべての定数をコンパイル時に初期化することは不可能な場合があります。例えば、プログラムで数値 √7 を繰り返し使用する場合を考えてみましょう。毎回計算する代わりに、次のように定数を定義する方が良いでしょう:

const ROOT_OF_SEVEN: f64 = 7_f64.sqrt();

しかし、このコードは無効です。Rustコンパイラは次のエラーを返します:

cannot call non-const fn `f64::<impl f64>::sqrt` in constantscalls in constants are limited to constant functions, tuple structs and tuple variants

環境変数で定数を初期化しようとする場合も同様です:

const LANG: String = env::var("LANG").unwrap();

Rustコンパイラからのメッセージ:

cannot call non-const fn `std::env::var::<&str>` in constantscalls in constants are limited to constant functions, tuple structs and tuple variants

ご覧のように、コンパイル時に初期化することが有用な特定の定数は、非定数の操作を必要とします。ここでRustのlazy_staticクレートが役立ちます。 lazy_staticを使用すると、値が実際にランタイムで最初に使用されたときにのみ設定されるグローバルな静的変数を定義できます。遅延静的変数は、使用される最初の時点でのみ初期化する必要があり、これは一度だけの操作なので、ランタイムでの初期化オーバーヘッドは無視できます。

この記事では、Rustのlazy_staticクレートを使用してグローバル定数を遅延初期化する方法と、いくつかの使用例について説明します。

lazy_staticの使用

lazy_staticクレートを使用するには、単純にプロジェクトの依存関係に追加します。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

データサイエンス

「David Smith、TheVentureCityの最高データオフィサー- インタビューシリーズ」

デビッド・スミス(別名「デビッド・データ」)は、TheVentureCityのチーフデータオフィサーであり、ソフトウェア駆動型のス...

人工知能

ムーバブルインクのCEO兼共同創設者であるヴィヴェク・シャルマ氏についてのインタビュー・シリーズ

ビヴェクは2010年にムーバブルインクを共同設立し、急速な成長を遂げながら、600人以上の従業員を擁し、世界有数の革新的なブ...

人工知能

「Ntropyの共同創設者兼CEO、ナレ・ヴァルダニアンについて - インタビューシリーズ」

「Ntropyの共同創設者兼CEOであるナレ・ヴァルダニアンは、超人的な精度で100ミリ秒以下で金融取引を解析することを可能にす...

人工知能

「コマンドバーの創設者兼CEO、ジェームズ・エバンスによるインタビューシリーズ」

ジェームズ・エバンズは、CommandBarの創設者兼CEOであり、製品、マーケティング、顧客チームを支援するために設計されたAIパ...

人工知能

ベイリー・カクスマー、ウォータールー大学の博士課程候補 - インタビューシリーズ

カツマー・ベイリーは、ウォータールー大学のコンピュータ科学学部の博士課程の候補者であり、アルバータ大学の新入教員です...

人工知能

「ゲイリー・ヒュースティス、パワーハウスフォレンジクスのオーナー兼ディレクター- インタビューシリーズ」

ゲイリー・ヒュースティス氏は、パワーハウスフォレンジックスのオーナー兼ディレクターであり、ライセンスを持つ私立探偵、...