【Rust入門#3】変数・関数・型の基本をわかりやすく徹底解説!【2025年最新版】

こんにちは!Rust入門シリーズの第3回へようこそ。

前回は、Rustの開発環境を構築し、「Hello, world!」を実行するところまで一緒に体験しました。

今回は、プログラミングの基礎となる「変数」「関数」「データ型」について、Rustではどう書くのか、初心者にもわかりやすく丁寧に解説していきます。

💡 本記事は「Rust 初心者」「Rust 変数とは」「Rust 関数の書き方」「Rust 型一覧」といったキーワードを中心に構成しています。検索でこの記事にたどり着いた方も、ゼロから理解できるように書いています。


🧠 Rustの基本構文とは?

Rustはモダンな構文と高い安全性が特徴の言語で、基本構文の学習を通じて、安全でエラーの少ないコードを書く力が身につきます。

この回では、以下の基礎要素にフォーカスします:

  • 変数の宣言と再代入(letmut
  • よく使うデータ型の種類と使い方
  • 関数の定義と引数・戻り値

📌 Rustの変数の使い方

Rustにおける変数は、基本的に「一度代入したら変更できない」というルールになっています。これは予期せぬバグを防ぐための設計です。

変数の宣言(let)

let x = 5;
println!("xの値は: {}", x);

このように let を使って変数を定義します。型は自動で推論されます。

可変変数(mutable)

変更可能な変数を作るには mut を使います:

let mut x = 10;
x = 20;
println!("新しいxの値: {}", x);

シャドーイング(再宣言)

Rustでは同じ名前の変数を再定義して「上書き」できます。

let x = 5;
let x = x + 1;
println!("xの値: {}", x);

🔍 シャドーイングとmutの違いmutは同じ変数を再代入、シャドーイングは新しい変数として扱います。


🧪 Rustのデータ型一覧と使い方

Rustは静的型付けの言語です。すべての変数には型があり、コンパイル時にチェックされます。

主な基本型一覧

型名説明使用例
i3232ビット整数(標準)let a: i32 = 10;
f6464ビット浮動小数(標準)let b: f64 = 3.14;
bool真偽値(true/false)let flag = true;
char1文字(Unicode対応)let c = 'R';
String可変長の文字列let name = String::from("Rust");

型注釈が必要なケース

let guess: u32 = "42".parse().expect("数値を入力してください");

📝 parse()を使うときなど、Rustでは型を明示しないと型推論ができないことがあります。

型安全とは?

Rustでは型をしっかり定義することで、型の不一致エラーをコンパイル時に防げるため、実行時エラーの少ない堅牢なコードが書けます。


🧮 関数の定義と呼び出し(fn)

Rustの関数は fn キーワードで定義します。

基本的な関数の書き方

fn greet(name: &str) {
    println!("こんにちは、{}さん!", name);
}

fn main() {
    greet("Taro");
}
  • 引数の型は明示的に指定
  • &str は文字列スライス型(軽量な文字列参照)

戻り値のある関数

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(5, 3);
    println!("5 + 3 = {}", result);
}

✅ return を使わなくても、最後の式の値が戻り値になります。ただし ; をつけないよう注意!

例:複数の関数を組み合わせる

fn square(x: i32) -> i32 {
    x * x
}

fn double(x: i32) -> i32 {
    x * 2
}

fn main() {
    let value = 4;
    println!("{} の2乗は {}、2倍は {}", value, square(value), double(value));
}

🙋 よくあるエラーと対処法

❌ セミコロンのミス

fn wrong() -> i32 {
    10; // セミコロンを付けると返り値が () になってしまう!
}

❌ 型不一致

let x: i32 = "abc"; // 文字列を整数に代入 → エラー!

エラーメッセージは非常に親切なので、落ち着いて読むことが大切です。


📝 まとめ:Rustの基本構文をしっかり理解しよう

この記事では、Rustの基本である「変数の扱い方」「型の考え方」「関数の使い方」を学びました。

  • letmutで変数の宣言と可変性を制御
  • Rustの型システムは安全かつ高機能
  • 関数の定義・引数・戻り値の扱いは非常に直感的

Rustを学ぶうえで、これらはすべての基礎になります。 この基本を理解することで、後の「制御構文」「所有権」「エラーハンドリング」などにもスムーズに進めます。

次回は、**条件分岐(if文・match)やループ処理(for / while)**といった、プログラムの流れを制御する文法について詳しく解説します!


🔗 参考リンク・補足情報

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です