0Pricing
Learn Rust Coding · レッスン

letと可変性

束縛とmut

「letと可変性」はCoddyKit上の無料Learn Rust Codingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn Rust Coding学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn Rust Codingコースには全4レッスンが含まれています。

letによる値の束縛

Rustでは、letキーワードを使って変数を作成します。これは名前を値に束縛します。

デフォルトでは、すべての束縛が不変です。いったん値を設定すると、変更できません。

fn main() {
    let x = 5;
    println!("The value of x is: {}", x);
}

デフォルトでは不変

Rustでは、意図的に変数を不変にします。これにより、意図しない変更を防ぎ、コードを理解しやすくできます。

不変な束縛に再代入しようとすると、実行時のクラッシュではなくコンパイルエラーになります。

  • let x = 5;の後にx = 6;とすると、コンパイルできません。
fn main() {
    let x = 5;
    // x = 6; // this would cause a compile error
    println!("x stays {}", x);
}

変数を可変にする

値を変更する必要がある場合は、mutキーワードを追加します。これにより、束縛が可変であることを示します。

これで、必要な回数だけ再代入できるようになります。

fn main() {
    let mut count = 0;
    count = count + 1;
    count += 1;
    println!("count is {}", count);
}

型推論

Rustは通常、値から変数の型を判断します。これを型推論と呼びます。

let x = 5;とすると、xには自動的にi32型が設定されます。

fn main() {
    let n = 42;      // inferred as i32
    let pi = 3.14;   // inferred as f64
    println!("{} and {}", n, pi);
}

型注釈

コロンと型名を使って、型を明示的に指定することもできます。これを型注釈と呼びます。

型注釈は、コンパイラーが型を推論できない場合や、意図を明確にしたい場合に便利です。

fn main() {
    let age: u32 = 30;
    let price: f64 = 9.99;
    println!("age {} price {}", age, price);
}

定数

constは常に不変で、型注釈が必須です。値はコンパイル時に判明していなければなりません。

慣例として、定数にはSCREAMING_SNAKE_CASEを使用します。

fn main() {
    const MAX_POINTS: u32 = 100_000;
    println!("Max is {}", MAX_POINTS);
}

constとletの違い

constとletの主な違いは次のとおりです。

  • constをmutにすることはできません。
  • constには型注釈が必要です。
  • constはコンパイル時定数式でなければなりません。
  • letの値は実行時に計算できます。
fn main() {
    const SECONDS_PER_HOUR: u32 = 60 * 60;
    let hours = 3;
    println!("{} seconds", SECONDS_PER_HOUR * hours);
}

ループ内で値を変更する

可変変数は、時間の経過とともに値を蓄積するループでよく使われます。

ここでは、mutを付けたアキュムレーターを使って数値を合計します。

fn main() {
    let mut total = 0;
    for i in 1..=5 {
        total += i;
    }
    println!("Sum is {}", total);
}

未使用の場合のアンダースコア

値を束縛しても一度も使用しないと、Rustは警告を出します。名前の先頭にアンダースコアを付けると、警告を抑制できます。

  • let _unused = 10;と書くことで、これが意図的であることをコンパイラーに伝えられます。
fn main() {
    let _temp = 99;
    let used = 1;
    println!("{}", used);
}

複数の束縛

それぞれにletを付けて、複数の変数を別々の行で宣言できます。

各束縛は独立しており、mutを付けない限り不変です。

fn main() {
    let name = "Rust";
    let year = 2010;
    let mut version = 1;
    version += 1;
    println!("{} born {} v{}", name, year, version);
}

不変性が役立つ理由

不変性は安全性を高める機能です。値が変更されないことをコンパイラーが把握できると、より強い保証を提供し、さまざまな種類のバグを防止できます。

本当に必要な場合にのみ、mutを使って変更可能にしてください。

fn main() {
    let config = "production";
    // config is guaranteed not to change
    println!("Running in {}", config);
}

理解度チェック

Rustの変数を変更可能にするキーワードは何ですか?

まとめ

Rustの束縛の基本を学びました。

  • letは名前を値に束縛し、デフォルトでは不変です。
  • mutは束縛を可変にします。
  • Rustは型を推論しますが、:を使って型注釈を追加できます。
  • constはコンパイル時定数で、常に不変であり、型が必要です。
fn main() {
    let mut score: u32 = 0;
    const BONUS: u32 = 10;
    score += BONUS;
    println!("Final score: {}", score);
}

よくある質問

「letと可変性」レッスンは無料ですか?

はい。「letと可変性」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn Rust Codingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn Rust Codingコースには全4レッスンが含まれています。

「letと可変性」で何を学びますか?

束縛とmut ブラウザで直接実行するハンズオンコードでLearn Rust Codingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn Rust Codingを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn Rust Codingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「letと可変性」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn Rust Codingレッスンでコードを書いて実行できますか?

はい。すべてのLearn Rust Codingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. letと可変性
  2. スカラー型
  3. 複合型
  4. シャドーイング
← Learn Rust Codingに戻る