Tour of Rust 목차

위험한 스마트 코드

smart pointer는 unsafe한 코드를 꽤 자주 쓰는 경향이 있습니다. 앞서 말했듯이, smart pointer는 Rust에서 가장 저수준의 메모리를 다루기 위한 일반적인 도구입니다.

뭐가 unsafe한 코드일까요? unsafe한 코드는 Rust 컴파일러가 보증할 수 없는 몇 가지 기능이 있다는 예외사항을 제외하고는 일반적인 코드와 완전히 똑같이 동작합니다.

unsafe한 코드의 주기능은 raw pointer를 역참조하는 것입니다. 이는 raw pointer를 메모리 상의 위치에 가져다 놓고 "데이터 구조가 여깄다!"고 선언한 뒤 사용할 수 있는 데이터 표현으로 변환하는 것을 의미합니다 (i.e. *const u8u8로). Rust에는 메모리에 쓰여지는 모든 바이트의 의미를 추적하는 방법은 없습니다. Rust는 raw pointer로 쓰이는 임의의 숫자에 무엇이 존재하는지 보증할 수 없기 때문에, 역참조를 unsafe { ... } 블록 안에 넣습니다.

smart pointer는 raw pointer를 역참조하는데 널리 쓰이지만, 그 기능은 잘 입증 되었습니다.