Tour of Rust 목차

익숙한 친구들

이미 본 적 있는 Vec<T>String 같은 smart pointer를 생각해 봅시다.

Vec<T>는 바이트들의 메모리 영역을 소유하는 smart pointer입니다. Rust 컴파일러는 이 바이트들에 뭐가 존재하는지 모릅니다. smart pointer는 관리하는 메모리 영역에서 내용물을 꺼내기 위해 자기가 뭘 의미하는지 해석하고, 데이터 구조가 그 바이트들 내 어디에서 시작하고 끝나는지 추적하며, 마지막으로 raw pointer를 데이터 구조로, 또 쓰기 편한 멋지고 깔끔한 인터페이스로 역참조 합니다. (e.g. my_vec[3])

유사하게, String은 바이트들의 메모리 영역을 추적하며, 쓰여지는 내용물이 언제나 유효한 utf-8이도록 프로그램적으로 제한하며, 그 메모리 영역을 &str 자료형으로 역참조할 수 있도록 도와줍니다.

이 데이터 구조들 둘 다, 자기 할 일을 하기 위해 raw pointer에 대한 unsafe한 역참조를 사용합니다.

메모리 상세: