....


Rust는 "쓰레기 수집 없이 메모리 안전성을 제공하는 언어"다. 다시 말해, Java처럼 바이트코드 실행기를 돌리거나, 스크립트 언어들처럼 인터프리터 런타임을 돌리거나 않고 C/C++와 동등한 기계어 코드를 만들어내면서 메모리 오류는 컴파일 시간에 잡아낸다는 것이다.

기본적으로 쓰레기 수집기(garbage collector)가 없기 때문에 쓰레기 수집기가 동작하는 동안 프로그램 전체의 실행이 멈춘다던가 하는 현상은 Rust에선 일어나지 않으며, 필요한 것보다 더 넓은 메모리를 쓰레기 수집기가 미리 할당해 둔다던가 하는 일 없이 정확하게 필요한 양의 메모리만 사용하는 프로그램을 만들 수 있다.[2] 동시에, C++처럼 메모리 관리를 전적으로 프로그래머에게 맡겨서 메모리 누수, 이중 반환, 댕글링 포인터 등등 온갖 종류의 메모리 오류로 프로그램이 박살나도록 방치하지도 않는다.

이를 달성하기 위해, Rust는 크게 두 가지 규칙을 만들고 이 규칙들을 타입 시스템으로 만들어서 컴파일 시간에 강제한다.

  • 모든 값은 한 곳에서만 소유할 수 있으며, 다른 곳에서 그 값에 접근하려면 소유권을 넘겨받거나 빌려서 써야 한다.
  • 하나의 값을 여러 곳에서 동시에 수정해선 안 된다.
(나무위키)





메모리 에러를 컴파일 타임에 잡는다? 솔깃한 소리네