Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![allow(unused_assignments)]
- #![allow(unused_variables)]
- #![allow(unused_mut)]
- #![allow(dead_code)]
- fn main() {
- {
- let mut a = 0;
- let mut ref_a = &mut a;
- // mutable な貸出の時(貸出先のオブジェクト)
- // - 読み取り OK
- // *ref_a;
- // - 書き込み OK
- // *ref_a = 5;
- // - mutable貸与 OK
- // let b = &mut *ref_a;
- // - immutable貸与 NG
- // let c = &*ref_a;
- // - 所有権の移動 OK
- // let d = ref_a;
- }
- {
- let mut a = 0;
- let mut ref_a = &mut a;
- // mutable な貸出の時(貸出元のオブジェクト)
- // - 読み取り NG
- // a;
- // - 書き込み NG
- // a = 5;
- // - mutable貸与 NG
- // let b = &mut a;
- // - immutable貸与 NG
- // let c = &a;
- // - 所有権の移動 NG
- // let d = a;
- }
- {
- let a = 0;
- let ref_a = &a;
- // immutable な貸出の時(貸出先のオブジェクト)
- // - 読み取り OK
- // *ref_a;
- // - 書き込み NG
- // *ref_a = 5;
- // - mutable貸与 NG
- // let b = &mut *ref_a;
- // - immutable貸与 OK
- // let b = &*ref_a;
- // - 所有権の移動 OK
- // let b = ref_a;
- }
- {
- let a = 0;
- let ref_a = &a;
- // immutable な貸出の時(貸出元のオブジェクト)
- // - 読み取り OK
- // a;
- // - 書き込み NG
- // a = 5;
- // - mutable貸与 NG
- // let b = &mut a;
- // - immutable貸与 OK
- // let b = &a;
- // - 所有権の移動 OK
- // let c = a;
- }
- {
- // 明示的な所有権の移動は出来ない (なぜなら a は b にオブジェクトを貸与中のため)
- let mut a = 100;
- {
- let b = &mut a;
- let c = 5;
- // a = b;
- // error[E0506]: cannot assign to `a` because it is borrowed
- // a = c;
- // error[E0506]: cannot assign to `a` because it is borrowed
- }
- a = 200; // OK
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement