見出し画像

Rust 変数の束縛とは 使い方と注意点について

Rustにおける「束縛」は変数やパターンによって値を名前に関連付けることを指します。

変数や関数の引数、パターンマッチングなど、プログラム内で名前付きの値を作成し、それを操作する際に重要な役割を果たします。


束縛の使い方

変数の束縛

letキーワードを使って変数を束縛することができます。これにより、名前と値の関連付けが行われます。

let x = 5;

変数はデフォルトで不変ですが、mutキーワードを使用してミュータブルにすることも可能です。

let mut x = 5;
x = 6;


パターンマッチングでの束縛

Rustのパターンマッチングは、値の構造に基づいて束縛を行うことができます。

enum Shape {
    Circle(f64),
    Rectangle(f64, f64),
}

let shape = Shape::Circle(3.0);

match shape {
    Shape::Circle(radius) => {
        println!("Circle with radius {}", radius);
    },
    Shape::Rectangle(width, height) => {
        println!("Rectangle with width {} and height {}", width, height);
    },
}

Shapeのバリアントに基づいて値を束縛し、その値を使って異なる処理を行っています。


ロージャでの束縛

クロージャは、外部の変数をキャプチャして内部で束縛することができます。

let x = 10;
let add_five = |y| y + x;
println!("{}", add_five(5));


注意点

不変性とミュータビリティ

Rustでは変数はデフォルトで不変です。
変数をミュータブルにするには、mutキーワードを使用する必要があります。ミュータブルな変数を不適切に使用すると、予期しないバグやデータ競合が発生する可能性があります。


パターンマッチングでの束縛

パターンマッチングで値を束縛する際、すべての可能性をカバーするように注意が必要です。特にmatch文では、全てのケースを網羅しないとコンパイルエラーが発生します。


ライフタイムと所有権

束縛によって所有権が移動することがあります。
クロージャでの束縛は外部の変数をキャプチャするため、ライフタイムに注意する必要があります。また、変数の寿命を超えてアクセスしようとするとエラーが発生します。


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

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

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

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


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

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

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

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

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

この経験に学べ

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