13.2 Ownership and moves

변수들이 자체 자원을 해제할 책임을 갖기 때문에, 자원은 오직 하나의 소유자를 갖는다, 이는 또한 리소스가 한번 이상 해제되는 것을 방지한다. 주목할 점은 모든 변수가 자원을 소유하는건 아니라는 점이다.(예 [참조]).

할당을 수행할 때 (let x = y )나 함수에 인자를 값으로 전달할 때(foo(x)), 자원의 소유권은 전달된다. Rust에서는 이를 이동(move)이라고 한다.

자원의 이동 후에, 이전 소유주는 더 이상 사용할 수 없다. 이는 dangling 포인터가 생성되는 것을 회피한다.

// .
fn destroy_box(c: Box<i32>) {
println!("Destroying a box that contains {}", c);
// `c` .
}
fn main() {
// _Stack_
let x = 5u32;
// `x` `y` ** - .
let y = x;
// .
println!("x is {}, and y is {}", x, y);
// `a` _heap_ .
let a = Box::new(5i32);
println!("a contains: {}", a);
// `a` `b` *(Move)*
let b = a;
// `a` b ( ).
//
// `b` .
// ! `a` .
// , .
//println!("a contains: {}", a);
// TODO ^ .
// `b` .
destroy_box(b);
// ,
// ,
// .
// ! .
//println!("b contains: {}", b);
// TODO ^ .
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

results matching ""

    No results matching ""