#Rust https://doc.rust-jp.rs/book-ja/ch04-02-references-and-borrowing.html#%E5%8F%AF%E5%A4%89%E3%81%AA%E5%8F%82%E7%85%A7 ## 概要 ```rust fn main() { let mut s = String::from("hoge"); let r1 = &s; let r2 = &mut s; // ここでエラーになる println!("{}, {}", r1, r2); } ``` ``` error[E0502]: cannot borrow `s` as mutable because it is also borrowed as immutable --> src\main.rs:5:14 | 4 | let r1 = &s; | -- immutable borrow occurs here 5 | let r2 = &mut s; | ^^^^^^ mutable borrow occurs here 6 | 7 | println!("{}, {}", r1, r2); | -- immutable borrow later used here ``` ## 理由 - [[不変参照]]は、参照先のデータが書き換わることを想定していないため - [[特定のスコープである特定データに対して1つしか可変参照を持てない]] と同じ