Rust 언어팀, 스마트 포인터를 내장 참조처럼 쓰게 하는 Beyond the & 설계 공개
- Mutex로 감싼 MutexGuard는 빌림 검사기가 state.cache와 state.template의 분리를 추적하지 못해 같은 코드가 컴파일 거부됨. 임시 해결책은
&mut *state.lock().unwrap()처럼 한 번 역참조해 내장 참조를 새로 만드는 것임 - Rust 언어팀의 Tyler Mandry는 RustConf 2026에서 컴파일러 내부 개념인 place(위치)를 사용자 코드에 노출하는 방식을 발표함. Nadrieril과 Benno Lossin의 작업을 바탕으로 함
- 스마트 포인터마다 새 핸들 타입을 만드는 것이 기본 방향이며, 원시 포인터나 MaybeUninit처럼 쓰기만 되는 포인터까지 하나의 설계로 묶기 어려움이 과제임
- 프로젝트 이름은 Beyond the &이며, Mandry를 포함한 언어팀 여러 멤버가 2026년 내내 이 작업을 진행함
Hacker News 의견들
dereference 두 번 해서 에러 난 거 아님? 한 번만 역참조하면 되는 건데 뭐가 직관적이지 않다는 건지 모르겠음
학습 곡선 얘기도 솔직히 과장 같음. 여기에 암묵성을 더 얹으면 . 쓸 때마다 뭐가 일어나는지 더 헷갈려서 오히려 배우기 어려워질 듯
근데 문제는 Box랑 & 같은 내장 포인터는 컴파일러가 이미 특별 취급해서 잘 돌아가는데, 서드파티나 std 포인터는 그게 없다는 거임. 그 차이 때문에 혼란이 생기는 거고, 그래서 . 암묵성보다 place를 더 일급으로 만드는 게 본질임
MutexGuard만 빼면 같은 코드가 에러 없이 도는데, 프로그래머가 &mut 강제 변환을 직접 써야 한다는 게 좋은 언어 설계냐는 얘기임
에러 원인 설명 말고 이 기능이 실제로 뭘 얻는 예제가 뭔지 먼저 보여줘야 답이 나올 것 같음