Choose a default theme

You can change your theme from the menu

Rust

Earlier revision · 2View current content

Rust는 성능과 메모리 안전성을 중요한 목표로 하는 프로그래밍 언어이다. 소유권과 빌림의 규칙을 컴파일 단계에서 검사하는 방식이 특징이며, 모든 값에 런타임 가비지 컬렉션을 적용하는 모델과 다르다.

프로그래밍 언어

언어

Python · Java · JavaScript · TypeScript · Rust

분야

소유권 기반 정적 타입 시스템 언어

소유권

값에는 소유자가 있고 소유자가 범위를 벗어나면 해당 값의 정리 동작이 수행된다. 값을 다른 변수나 함수로 넘길 때 소유권이 이동하는 경우와 복사되는 경우를 구별해야 한다. 이동된 값을 다시 사용하려는 코드는 컴파일 오류가 될 수 있다.

빌림과 경계

소유권을 넘기지 않고 참조로 값을 이용하는 방식이 빌림이다. 함수가 데이터를 잠시 읽는지, 수정하는지, 아예 소유하는지를 API에서 드러낼 수 있다. 이 구분은 단지 컴파일러를 만족시키는 문법이 아니라 데이터의 생명주기와 변경 권한을 표현하는 설계 수단이다.

예시와 비용

큰 문자열을 분석하는 함수가 읽기만 한다면 매번 복제할 필요 없이 참조로 전달하는 구성을 고려할 수 있다. 반대로 데이터를 독립적으로 보관해야 한다면 소유권 이전이나 복제가 필요하다. 무조건 clone을 추가해 오류를 피하면 의도하지 않은 복사 비용이 생길 수 있다.

안전성의 범위

컴파일 검사가 모든 논리 오류나 자원 고갈을 막아 주는 것은 아니다. unsafe 코드와 외부 라이브러리를 사용할 때에도 지켜야 할 조건이 있다. 언어의 메모리 안전성과 서비스의 인증·권한·업무 규칙상 안전성을 구별한다.

참고 자료