struct C{
n:i32
}
fn main(){
let c = C{n:5};
//널 포인터가 없다. Option으로 있는지 체크한다.
let mut d:Option<C> = None;
//c 레퍼런스 변수는 mutable이 아니므로 객체의 상태를 수정할 수 있다.
c.n = 10;
let mut c = c;
//c레퍼런스 변수는 mutable이므로 객체의 상태를 변경할 수 있다.
c.n = 10;
if let Some(ref e) = d{
//이건 컴파일 에러가 난다.
e.n = 5;
}
if let Some(ref mut e) = d{
e.n = 5;
}
//None이 아니라는 걸 확신할 수 있다면 unwrap를 사용하자. 이 때 d의 소유권이 e에게 넘겨진다.
let mut e = d.unwrap();
if let Some(ref mut e) = d{
//d의 소유권이 없으므로 컴파일 에러가 난다.
e.n = 5;
}
}
엄근진 컴파일러