【Rust入門#3】変数・関数・型の基本をわかりやすく徹底解説!【2025年最新版】
こんにちは!Rust入門シリーズの第3回へようこそ。
前回は、Rustの開発環境を構築し、「Hello, world!」を実行するところまで一緒に体験しました。
今回は、プログラミングの基礎となる「変数」「関数」「データ型」について、Rustではどう書くのか、初心者にもわかりやすく丁寧に解説していきます。
💡 本記事は「Rust 初心者」「Rust 変数とは」「Rust 関数の書き方」「Rust 型一覧」といったキーワードを中心に構成しています。検索でこの記事にたどり着いた方も、ゼロから理解できるように書いています。
🧠 Rustの基本構文とは?
Rustはモダンな構文と高い安全性が特徴の言語で、基本構文の学習を通じて、安全でエラーの少ないコードを書く力が身につきます。
この回では、以下の基礎要素にフォーカスします:
- 変数の宣言と再代入(
let
,mut
) - よく使うデータ型の種類と使い方
- 関数の定義と引数・戻り値
📌 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は静的型付けの言語です。すべての変数には型があり、コンパイル時にチェックされます。
主な基本型一覧
型名 | 説明 | 使用例 |
---|---|---|
i32 | 32ビット整数(標準) | let a: i32 = 10; |
f64 | 64ビット浮動小数(標準) | let b: f64 = 3.14; |
bool | 真偽値(true/false) | let flag = true; |
char | 1文字(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の基本である「変数の扱い方」「型の考え方」「関数の使い方」を学びました。
let
とmut
で変数の宣言と可変性を制御- Rustの型システムは安全かつ高機能
- 関数の定義・引数・戻り値の扱いは非常に直感的
Rustを学ぶうえで、これらはすべての基礎になります。 この基本を理解することで、後の「制御構文」「所有権」「エラーハンドリング」などにもスムーズに進めます。
次回は、**条件分岐(if文・match)やループ処理(for / while)**といった、プログラムの流れを制御する文法について詳しく解説します!