見出し画像

Rust const/定数の使い方と注意点について

Rustのconst(定数)は、値を固定して変更できないようにするためのキーワードです。

constはコード内で特定の値を固定して、それを名前付きで参照できるようにするのに便利です。


constの定義と使い方

定数は関数の外側やモジュール、構造体、implブロック内で定義できます。

また、定数はプログラム全体を通じて有効で、変更することができません。

const PI: f64 = 3.141592653589793;

constを使って定数を定義するとき、型を明示的に指定する必要があります。


constの利用例

constはグローバル定数と構造体内で定義するという二つの使い方があります。

const MAX_CONNECTIONS: u32 = 100;

fn main() {
    println!("Max connections: {}", MAX_CONNECTIONS);
}

MAX_CONNECTIONSはグローバル定数としてプログラム全体で最大接続数を固定するのに使用されています。

struct Circle {
    radius: f64,
}

impl Circle {
    const PI: f64 = 3.141592653589793;
    
    fn area(&self) -> f64 {
        Circle::PI * self.radius * self.radius
    }
}

構造体のCircle内で定数PIを定義し、メソッドareaで円の面積を計算するために使用しています。


constとstaticの違い

Rustにはもう一つの定数キーワードstaticがありますが、constとstaticには重要な違いがあります。

const

定数の値はコンパイル時に確定し、変更することができません。
constは値を固定するために使用され、プログラム全体で一貫性のある値を提供します。

static

静的変数はプログラムのライフタイムを通じて存在し、値を変更できる場合もあります)。
staticは、共有リソースやグローバルな状態を表すために使用されます。


注意点

型の指定

constを定義する際は、型を明示的に指定する必要があります。
型が指定されていない場合、コンパイルエラーが発生します。


値の固定

constは一度定義すると変更できません。
変更可能な値が必要な場合は、static mutや変数を使用します。


計算の制限

constは複雑な計算や動的な要素を含む値には適していないことため、定義できる値は、コンパイル時に計算可能なものでなければなりません。


Rustをもっと詳しくなりたい方に

Rustプログラミング完全ガイド 他言語との比較で違いが分かる!

個人的には他の言語開発もそれなりにあったことからこの本を読むことでかなりRustへの理解が深まりました。
プログラムやシステム的な専門用語は当たり前に登場するものの、他の言語での開発経験がある方なら問題ないでしょう。むしろその経験があることで、多言語との比較をしながら読み進めることができます。
内容的には大容量かつ丁寧すぎるほど嚙み砕いて説明がされているため、情報量は十分といえます。Rust自体学習コストが高く、難易度の高い言語のためこのくらいが妥当といえます。
プログラミング初心者レベルの方には難しい内容となっていますが、Rustの概念を理解し、基礎を把握することができる本であること間違いなしです。

Rust学習のために筆者が実際に読んでおすすめしたい本をまとめています。


基礎から学ぶRustプログラミング入門

本コースではRustについて全く経験がない方でもスムーズに学習を進められるようにとなっています。
基本的にはコードベースで解説を行い、抽象度が高く難しい内容に関しては適宜スライドも使いながら丁寧に解説します。そしてただ文法を学ぶだけではなく、最終的には演習としてCLIアプリケーションを作成し学習内容の定着を図ります。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています

この記事が参加している募集

この経験に学べ

この記事が気に入ったらサポートをしてみませんか?