NonNull — 널이 아닌 가변 포인터

NonNull — 널이 아닌 가변 포인터

NonNull<T>는 널(null)이 될 수 없는 가변 포인터 타입이에요. *mut T의 안전한 래퍼 역할을 해요.

출처: Rust 공식 문서

본문

pub struct NonNull<T: ?Sized> { /* private fields */ }

NonNull<T>는 널 포인터가 아님을 보장해요. 그래서 Option<NonNull<T>>는 포인터와 같은 크기(널 최적화)를 가지며, 컬렉션 구현에서 포인터를 저장할 때 유용해요.

주요 메서드

pub const unsafe fn new_unchecked(ptr: *mut T) -> NonNull<T>
pub fn new(ptr: *mut T) -> Option<NonNull<T>>
pub const fn as_ptr(self) -> *mut T
pub unsafe fn as_ref<'a>(&self) -> &'a T
pub unsafe fn as_mut<'a>(&mut self) -> &'a mut T

Deref 대신 as_ref/as_mut을 통해 참조로 변환해 사용해요.

더 알아보기 (Learn more)