rust에서 unsafe는 로우레벨 코딩할때나 필요하지 일반적인 응용 작성할 때는 거의 쓸 일 없다고 봐도 무방합니다.
그리고 unsafe 블록 안에서 메모리 문제가 발생한다 하더라도 문제가 발생하는 부분은 unsafe 블록 안에 있다는 것이 언어적으로 보장되어 있으니 디버깅을 쉽게 할 수 있다는 장점도 있구요.
C++ 도 계속 진화 하고 있고, unsafe 쓸 바엔 그냥 c++ 쓰고 말지, 굳이 RUST 배워서 사용할 필요성을 못 느끼는 거죠.
모든 rust 프로그래밍에 unsafe가 필요한 것은 아니라서요.
unsafe가 필요할 정도로 세심한 메모리 조작은 보통 라이브러리 개발로 빠져있기 때문에 (아마 가장 많은 수요가 있을) 어플리케이션 개발 단에서는 unsafe를 쓸 일이 거의 없을 거라고 봅니다.
c++도 계속 진화하고 있는 것은 맞지만 하위호환을 위한 레거시가 너무 뼈아프죠. unsafe 하나 때문에 불만이실 정도라면 c++의 모든 기능이 불만이실 것 같네요 ㅎㅎ
그래서 unsafe가 권장되지는 않죠.
safe를 쓰면 모든게 unsafe나 다름없는 C/C++보다 안전하구요
https://people.mpi-sws.org/~dreyer/papers/rustbelt/paper.pdf
rust 가 처음 나왔을 때 굉장히 관심을 가지고 공부를 좀 하다가...unsafe 항목 보고 바로 접었어요. 이걸 왜 배워서 써야 할지 도저히 합리적 설득이 안되더군요. 어차피 조금만 복잡한 프로그램은 unsafe 를 사용해야만 하죠. 그런데 그럼 rust 가 그렇게 자랑하는 안정성은 날라가는 거죠. 이걸 왜 써요 ?