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);
}