今日の目的
- Rustの開発環境構築
- Week1課題(偶数/奇数判定)を実装して実行
- プロジェクト構成の理解(Cargo.toml / main.rs)
実施内容
1. 環境構築
- rustup をインストール
cargo --version/rustc --versionで確認- PATH に
C:\Users\PC_User\.cargo\binを追加してコマンドを直接実行可能に
2. プロジェクト作成
cargo new rust_week1でプロジェクト作成- 主要ファイルの役割を確認
Cargo.toml: プロジェクト設定・依存関係Cargo.lock: 依存バージョンの固定src/main.rs: エントリーポイント
3. Week1課題の実装(偶数/奇数判定)
- 標準入力から整数を受け取り、偶数なら
even、奇数ならoddを出力 - 1行入力の読み取りに
read_lineを利用 - 数値変換は
parse()+matchで安全に処理
実行コマンド
cd rust_week1
cargo run学んだこと(ポイント)
- Rustは所有権・借用の前に「型の厳密さ」と「安全な入力/エラー処理」が重要
matchとResultでエラー処理が明確になるprint!の後にflush()で即時表示できる
次回予定
- Week2: 所有権・借用(TypeScriptとの比較を交えた解説)
メモ: プロンプトが出たら数値を入力して Enter。結果が even/odd で表示される。
main.rs 詳細解説
1) 入出力のための宣言
use std::io::{self, Write};- 標準入力/出力を使うための宣言。
Writeはflush()を使うために必要。
2) エントリーポイント
fn main() {- プログラムの開始点。
3) 入力プロンプト表示
print!("整数を入力してください: ");
let _ = io::stdout().flush();print!は改行なし。flush()で即時に画面へ出力。
4) 1行入力を読む
let mut input = String::new();
if io::stdin().read_line(&mut input).is_err() {
eprintln!("入力の読み取りに失敗しました");
return;
}read_lineで1行を読み込む。- 失敗時は
eprintln!でエラー出力して終了。
5) 空入力のチェック
let trimmed = input.trim();
if trimmed.is_empty() {
eprintln!("数値が入力されていません");
return;
}trim()で前後の空白/改行を削除。- 何も入力されていない場合は終了。
6) 文字列→数値の変換
let number: i64 = match trimmed.parse() {
Ok(value) => value,
Err(_) => {
eprintln!("数値として解釈できません: {}", trimmed);
return;
}
};parse()の結果(Result)をmatchで分岐。- 変換失敗時はエラーを出して終了。
7) 偶数・奇数判定
if number % 2 == 0 {
println!("even");
} else {
println!("odd");
}
}%で余りを判定し、偶数ならeven、奇数ならodd。
コード一覧(main.rs)
use std::io::{self, Write};
fn main() {
print!("整数を入力してください: ");
let _ = io::stdout().flush();
let mut input = String::new();
if io::stdin().read_line(&mut input).is_err() {
eprintln!("入力の読み取りに失敗しました");
return;
}
let trimmed = input.trim();
if trimmed.is_empty() {
eprintln!("数値が入力されていません");
return;
}
let number: i64 = match trimmed.parse() {
Ok(value) => value,
Err(_) => {
eprintln!("数値として解釈できません: {}", trimmed);
return;
}
};
if number % 2 == 0 {
println!("even");
} else {
println!("odd");
}
}