스코프 종료 해제
값 생성
소유자가 살아 있는 동안 참조와 메서드 호출이 허용됩니다.
역순 drop
지역 변수는 나중에 만든 값부터 Drop::drop이
실행됩니다.
한 번만 호출
컴파일러가 남은 참조와 이동 상태를 검사해 double free를 막습니다.
Drop::drop은 컴파일러가 스코프 끝에 호출하고,
std::mem::drop은 값을 소비해 즉시 소유권을 끝냅니다.
소유자가 살아 있는 동안 참조와 메서드 호출이 허용됩니다.
지역 변수는 나중에 만든 값부터 Drop::drop이
실행됩니다.
컴파일러가 남은 참조와 이동 상태를 검사해 double free를 막습니다.
drop(c)는 값을 인수로 받아 소유권을 가져갑니다.
std::mem::drop(c)
MutexGuard, 큰 Vec 버퍼, 임시 File 핸들처럼 빨리 놓아야 할 자원을 해제합니다.
소비된 값은 이후 코드에서 다시 사용할 수 없고 E0382가 발생합니다.
Drop::drop
fn drop(&mut self)로 RAII 해제 로직을 정의합니다.
drop(value)
값을 소비해 스코프 끝보다 먼저 해제하고 재사용을 막습니다.
직접 호출 금지
value.drop()은 E0040으로 거부됩니다.