Rust의 참조 기본 규칙은 심플하게 4개
1. 단 하나의 변경 가능한 참조 가능
let mut foo = 42 as i32;
let foo_ref1 = &mut foo;
let foo_ref2 = &mut foo;
println!("{}", foo_ref1);
println!("{}", foo_ref2);
- Rust는 데이터 경합의 가능성 때문에 소유된 값을 변경하는 방법이 여러 개 생기는 것을 방지
2. 함수를 사용하면 여러개의 변경 가능한 참조 가능
fn func(item: &mut i32) {
*item += 1;
}
fn main() {
let mut foo = 42 as i32;
func(&mut foo);
func(&mut foo);
println!("{}", foo);
}
3. 여러개의 변경 불가능한 참조 가능
let foo = 42 as i32;
let foo_ref1 = &foo;
let foo_ref2 = &foo;
println!("{}", foo_ref1);
println!("{}", foo_ref2);
4. 기타
- 참조는 그 소유자 보다 더 오래 살 수 없다.
- 참조의 참조 가능
fn main() {
let a = 32_i32;
let b = &a;
let c = &b;
let d = &&b;
println!("{}", c);
println!("{}", d);
}
참고
https://github.com/utilForever/2022-Korea-Rust-Backend