Day 2: 借用チェッカー攻略

課題概要

Rustの借用システムを実践的に習得する課題です。

目標

  • 参照と借用の違いを理解する
  • 不変借用と可変借用のルールを習得する
  • 借用チェッカーのエラーを読み解く
  • 課題

    Exercise 1: 不変借用

    複数の不変参照を使ってデータにアクセスするコードを書いてください:

    fn calculate_length(s: &String) -> usize {
        // TODO: 文字列の長さを返す(所有権を取らない)
    }
    
    fn main() {
        let s = String::from("hello");
        let len = calculate_length(&s);
        // TODO: sがまだ使えることを確認
    }
    

    Exercise 2: 可変借用

    可変参照を使って文字列を変更するコードを書いてください:

    fn append_world(s: &mut String) {
        // TODO: 文字列に" world"を追加
    }
    
    fn main() {
        let mut s = String::from("hello");
        append_world(&mut s);
        println!("{}", s); // "hello world"
    }
    

    Exercise 3: 借用ルールの違反を修正

    以下のコードがコンパイルエラーになる理由を説明し、修正してください:

    fn main() {
        let mut s = String::from("hello");
    
        let r1 = &s;
        let r2 = &s;
        let r3 = &mut s;  // エラー!
    
        println!("{}, {}, {}", r1, r2, r3);
    }
    

    提出物

  • 3つのExerciseの実装コード
  • 借用ルールの説明コメント