[Rust] unsafe: 함수와 트레잇

unsafe 구역의 최소단위는 중괄호 블럭이지만, 함수나 메서드, 트레잇에도 unsafe를 명시할 수 있다.

unsafe로 명시된 함수는 그 안이 전부 unsafe 구역이 된다.
그리고 밖에서 unsafe 함수를 호출할 경우, 그 호출부분은 unsafe 구역 내에만 존재해야 한다.

아래는 간단한 예시다.
불변참조를 받아서 원본값에 1을 더하도록 했다. image

image

image 메서드도 이와 똑같다.


unsafe trait은 이와 다르게 자체로는 특별한 기능을 수행하진 않는다.
그냥 트레잇 메서드 중에 unsafe한 메서드가 있다면, 그걸 트레잇에도 표시해주는 용도다.

unsafe trait의 구현은 unsafe impl 키워드로 행할 수 있다. image

image

image

그렇다.


참조
https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html