우리가 오히려 어색 할 수 있습니다 NULL에 대해 검사 할 필요가 없습니다 알고 인스턴스에 대한 원시 포인터의 중첩 된 멤버에 액세스하기위한 표기법 :원시 포인터 구성원에게 편리하게 액세스 할 수 있습니까?
struct MyLink {
link: *mut MyLink,
}
let var = *(*(*(*root).link).link).link;
이 원시 포인터의 구조체 멤버가 필요없이 액세스 할 수 있습니다 명시 적으로 각 시간에 참조 해제 하시겠습니까? 어쩌면 root.link().link().link()
같은 메서드를 사용하거나 형식을 래핑하여?
관용적 인 녹이 피하는 동안, 피할 수없는 예외적 인 경우가 있습니다. Rc
이 메모리 오버 헤드를 가지고 있고, 빌린 체커가 인터 - 링크 멤버들에 대한 문제를 일으키고, C-API가 포인터를 필요로 할 수 있습니다 ... 등등.
래퍼 방법 접근 방법을 사용해 보셨습니까? 나는 또한 그 가장자리 사건에 대해 매우 궁금합니다. –
@ E_net4, 나는 그것을 아직 시도하지 않았지만 (어떻게 쓰여질 지 확신 할 수는 없다), 가장 유망한 해결책처럼 보인다. – ideasman42
"[녹슨 포인터]는 NULL에 대해 검사 할 필요가 없다"고 말하는 것은 잘못되었습니다. 참조에는 해당 등록 정보 (null 일 수 없음)가 있습니다. 이는 차용 검사기가 적용되어 (매달린 참조를 방지하기 위해) 이유입니다. 반면에 포인터는 null이 될 수 있지만, 안전성 검사는 '안전하지 않은'블록 밖에서 참조 해제 될 수 없다는 점에서 다릅니다. – ampron