안전하지 않음
안전하지 않음 (Unsafety)
unsafe 연산(unsafe operations) 은 Rust의 정적 의미론(static semantics)이 보장하는 메모리 안전성(memory-safety)을 잠재적으로 위반할 수 있는 연산을 말해요.
출처: Rust Reference
본문
다음 언어 수준의 기능들은 Rust의 안전한 부분집합(safe subset)에서는 사용할 수 없어요.
- raw 포인터 역참조하기.
- 가변 또는 unsafe 외부 static 변수를 읽거나 쓰기.
- union의 필드에 접근하기(할당하는 경우 제외).
- unsafe 함수 호출하기.
- 같은 기능을 활성화하는
target_feature속성이 없는 함수에서, 그target_feature로 표시된 안전한 함수 호출하기. - unsafe trait 구현하기.
extern블록 선언하기.¹- 항목에 unsafe 속성 적용하기.
¹ 원문 각주: 2024 에디션 이전에는 extern 블록을 unsafe 없이 선언하는 것이 허용되었어요.
정리하면, 이 목록의 연산들은 평범한 안전 코드에서는 막혀 있고 unsafe 블록이나 unsafe 함수 안에서만 사용할 수 있어요. 그래서 이 기능들을 쓸 때는 메모리 안전성을 스스로 책임져야 해요.