Day 1: 所有権マスター
課題概要
Rustの所有権システムを実践的に習得するための課題です。
目標
- 所有権の3つのルールを理解する
- Move と Copy の違いを実装で確認する
- 所有権を使った安全なコードを書く
課題
Exercise 1: 所有権の移動 (Move)
以下のコードがコンパイルできるように修正してください:
fn main() {
let s1 = String::from("hello");
let s2 = s1;
// TODO: この行がコンパイルエラーになる
// s1とs2の両方を使えるようにしてください
println!("s1 = {}, s2 = {}", s1, s2);
}
Exercise 2: 関数への所有権渡し
関数に所有権を渡し、戻り値で返す実装を完成させてください:
fn take_ownership(s: String) -> String {
// TODO: 文字列を大文字に変換して返す
}
fn main() {
let s = String::from("hello");
let s = take_ownership(s);
println!("{}", s); // HELLO
}
Exercise 3: Copy trait
Copy traitを実装した型とStringの違いを確認するコードを書いてください:
fn main() {
let x = 5;
let y = x;
// xとyの両方が使える理由を説明するコメントを追加
println!("x = {}, y = {}", x, y);
// TODO: Stringで同じことを試して違いを確認
}