이 책은 러스트 중급자에게 가장 적합한 책이다. 중급자라 함은, 기능을 구현할 때 어떻게 구현하는 것이 더 좋을지 고민하는 단계이다. 저자는 소개에서 경험과 사례를 기반으로, 왜 일반적으로 주어진 지침이 유용한지, 예외적인 상황에는 어떻게 대처하면 좋을지 자세히 설명한다. 이 모든 과정이 추상화된 프로그래밍의 영역이 아닌, 러스트의 원리를 기반으로 진행되기 때문에, 좀 더 Rust 답게 프로그래밍하고자 하는 이들에게 큰 도움을 줄 수 있을 것 같다.
하지만 나는 입문자들 또한 이 책을 구매하는 것을 추천하고 싶다. 모든 프로그래밍 언어가 그렇듯, 개발 경험이 쌓임에 따라 기능을 구현하는 것은 누구나 가능하지만, 좋은 코드를 작성하는 것은 그렇지 못하기 때문이다. 이 책에서는 초심자가 참고하기 좋은 지침을 잘 정리해두었기 때문에, 이러한 내용을 주기적으로 복습하는 것만으로 개발 능력을 빠르게 향상시킬 수 있을 것이다. 그러니 당장 읽지는 못하더라도, 두고두고 참고하기 좋은 책이라고 생각한다.
구성: 6개의 챕터, 그리고 35개의 아이템
각 챕터는 타입, 트레이트, 기타 주요 개념, 의존성, crates 툴, 러스트 심화를 주제로 나름 '기초'부터 심화까지 전 영역을 다루고 있다. 물론 러스트 프로그래머를 대상으로 작성된 책이라, 초심자가 바로 읽는 것은 확실히 부담으로 다가왔다. 적어도 Hello, World를 출력하는 코드를 작성하는 데 관여하는 배경 지식은 숙지해야 이 책을 읽을 수 있다.
다양한 아이템은 이 책이 왜 초심자에게도 유용한지 드러나는 대목이다. 각 아이템은 분명히 지킬 이유가 있는, 일련의 Best Practice를 제시한다. 이 가이드를 잘 숙지한다면 개발하는 중 이와 상충되는 상황을 마주했을 때, 저자가 이러한 규칙을 제시한 이유를 떠올려보고, 그 상황에서 최선의 선택을 행하면 된다. YAGNI (You ain't gonna need it)이나 KISS (Keep it short and simple) 원칙처럼 프로그래밍 전반에 적용되는 느낌은 아니지만, 적어도 Rust 프로그래밍을 진행하는 과정 중에는 특별한 상황이 아니라면 굳이 지키지 않을 이유가 없어보인다.
마치며...
러스트 사용 경험이 거의 전무한 상황이라 솔직히 책을 집어들었을 때, 어디부터 어떻게 읽어야 할 지 다소 막막했다. 펼치는 곳마다 이해하기 어려운 내용들이 펼쳐져 있었는데, C++의 확장판이라 생각하고, 그 차이점에 집중해서 기초를 공부한 이후에 읽으니 이전보다는 나았던 것 같다. 다른 개발자분들도 본 서적을 중급서라고 표현하시는 이유를 이해할 것 같다. 그렇다고 책의 가치 자체를 판단하지 못할 정도는 아니다. 이 책은 언제든 참조할 수 있도록 잘 정리된 아이템을 중심으로, 예제와 edge case를 담은 좋은 책이다. Rust를 배우고자 하시는 분들은 이 기회에 초보자에서 중급자로 한 단계 성장할 수 있을 것이라 생각한다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.