
317
6
장
표준 러스트를 넘어서
되는 코드의 사용성은 좋아진다. 여기서 일반 유저 스페이스란 메모리가 사실상 무한하거나,
메모리가 부족하다면 그보다 더 큰 문제가 발생한 것을 의미하는 환경을 말한다.
그러나 메모리가 부족한 환경에서 적절히 대처해야 하는 프로그램에는 ‘할당에 실패하지 않는
다’는 가정이 전혀 맞지 않다. 메모리 안전성이 떨어지는 구식 언어가 오히려 유리한 극히 드문
경우다.
●
C
언어는
malloc
으로 직접 할당하고 그 반환값이
NULL
인지 확인해야 할 정도로 저수준으로 작동한다.
●
C
++는 할당 실패가 발생하면
std::bad_alloc
예외를 던지는 예외 메커니즘을 활용한다.
6
그동안 리눅스
Linux
커널, 안드로이드,
Curl
도구와 같은 몇몇 유명 프로젝트에서 러스트 표준
라이브러리의 부족한 할당 실패 대처 능력에 대한 지적이 많았고, 현재 이를 보완하는 작업이
진행 중이다.
할당 실패에 대처하기 위한 첫 번째 단계는 ‘실패 가능한 컬렉션 할당’을 지원하는 것이다. 그래
서 할당이 관련된 컬렉션
API
에 실패 가능한 할당
fallible
allocation
을 추가했다. 대부분
Result
<_,
AllocError
>
를 반환하는
try
_<
operation
>
배리언트를 추가하는 방식으로 처리했다. 예를
들면 다음과 같다.
●
Vec::reserve ...