'owner 가 스코프를 벗어나면 해제된다' 는 말을 이제 몇 번 봤지. 이 레슨이 그 메커니즘을 명시해 — RAII 라고 부르고, 언어에서 가장 조용하면서 가장 강력한 아이디어 중 하나야.
스코프가 끝나면 값이 drop 돼
변수가 스코프를 벗어나면 Rust 가 자동으로 drop 을 호출해서 그게 소유한 걸 풀어줘. String 이면 힙 버퍼를 해제하고. 너는 free() 를 절대 안 써; 닫는 중괄호가 곧 free 야. 결정론적으로, 컴파일 타임에 아는 지점에서 일어나 — 가비지 컬렉터처럼 '언젠가' 가 아니라.
RAII — 자원을 스코프에 묶기
이건 메모리를 한참 넘어 일반화돼. 파일 핸들, 네트워크 소켓, mutex 락 — 전부 정리를 drop 에 묶을 수 있어. 파일을 열면, 소유 변수가 스코프를 떠날 때 파일이 닫혀. 락을 잡으면, guard 가 drop 될 때 락이 풀려. 자원의 수명이 곧 변수의 스코프야. 그게 RAII: Resource Acquisition Is Initialization.
Drop 구현이 owner 의 스코프가 끝나는 정확히 그 순간 풀어줘. 누수 없음, '그거 닫았던가?' 없음, GC 멈춤 없음.커스텀 Drop
네 타입에 Drop 을 구현해서 스코프 끝에 코드를 돌릴 수 있어 — 버퍼 flush, 종료 로그, 핸들 해제. drop 을 손으로 부를 일은 거의 없어 (컴파일러가 해); 정리가 뭘 의미하는지만 정의하면 자동으로 돌아.
왜 이게 이후 전부에 중요하냐
소유권은 누가 해제하는지를 정했어. Drop 은 언제 를 정해: 정확히 owner 의 스코프 끝에서. 이 둘을 같이 쥐면 Rust 의 척추를 이해한 거야 — 이후 모든 주제 (borrowing, lifetimes, smart pointers) 가 '이거 누가 소유하고, 언제 drop 돼?' 의 정교화야.