MaybeDangling
MaybeDangling (댕글링 허용 래퍼)
감싸진 참조와 Box가 댕글링(dangling)하는 것을 허용하는 구조체예요.
출처: Rust 공식 문서
본문
참조(또는 Box)가 MaybeDangling에 감싸져 있으면(복합 타입의 (중첩) 필드에 있을 때를 포함해), 포인터 별명 규칙을 따르거나 역참조 가능할 필요가 없어요.
이것은 값이 함수가 여전히 실행 중인 동안 댕글링 상태가 될 수 있을 때(특히 동시성 코드에서) 유용해요. 다소 터무니없는 예로, 다음 코드를 고려하세요:
let mut boxed = Box::new(0_u32);
let ptr = Box::as_mut_ptr(&mut boxed);
// Safety: 포인터는 box에서 왔으므로 이전에 할당되었음; `box`는 이후에 사용되지 않음
pub struct MaybeDangling<P>(/* private fields */)
where
P: ?Sized;