#필자의 Rust에 대한 TMI
필자는 Rust를 2019년에 처음 접하게 되었다. 그때는 The Rust Programming Language라는 e-book을 통해 단순히 맛보기 수준으로 Rust를 알아갔고, 본격적으로 공부하진 않았다. 이후 Rust가 조금씩 유명세를 타던 2021년에 다시 관심을 가지게 되었고, The Rust Programming Language 2판 번역본에 오타를 수정하거나 제안을 넣는 등 여러 번 기여해본 경험이 있다. 사실 그 시기에는 이미 Python과 AI 분야로 관심이 기울어진 상황이라 Rust를 깊이 파고들 생각은 없었다.
C++와의 인연은 2013년으로 거슬러 올라가는데, 당시 Cocos2D-x를 활용해 게임을 만들어 보면서 C++을 익히기 시작했다. 그리고 Unreal Engine이 3에서 4로 넘어가며 무료화 이슈가 크게 떠올랐을 때, 자연스럽게 C++을 깊이 공부하게 되었다. 여기서 C++ 경험을 이야기하는 이유는 이 책이 C++과 Rust를 비교하며 설명하는 부분이 많고, 필자가 이 두 언어에 대한 어느 정도의 배경지식을 갖고 있다는 점을 미리 밝히기 위함이다.
Effective Rust 책에 대한 후기
이펙티브 러스트는 Rust 언어에 대한 실질적인 활용법을 알기 쉽게 풀어내고 있다. 이 책은 러스트의 독특한 개념들을 C++과 비교하면서 설명하기 때문에, C++을 주로 사용해온 개발자라면 더욱 빠르게 이해할 수 있게 구성되어 있다.
이 책에서 작성된 예제 및 에러 코드는 rustc 1.70
버전이며 필자가 책을 보면서 돌려본 환경은 rustc 1.71.1 (eb26296b5 2023-08-03)
이다. 이 버전에서는 문제가 없는것을 확인하였다. 최신 릴리스 버전에서 안되는부분이 있다면 참고바란다.
Rust는 C++과는 다른 메모리 관리 방식을 채택하고 있는데, 이 책에서는 Rust가 메모리 안전성을 보장하는 구조를 중심으로 설명하고 있다. 특히 Rust의 ‘소유권’ 모델과 ‘borrow checker’라는 개념이 강조된다. C++에서는 주로 메모리 관리를 수동으로 하거나 스마트 포인터를 사용하는데, Rust의 소유권 모델은 이러한 수고를 덜어주면서도 메모리 누수를 방지할 수 있도록 돕는다. 이 책은 이 소유권 모델을 실제 코드 예제와 함께 설명하며, 안전한 메모리 관리의 중요성을 다시금 일깨워준다.
책에서 다루는 또 다른 중요한 내용은 ‘패턴 매칭’과 ‘Result 타입’을 활용한 에러 처리이다. C++에서는 예외를 사용하거나 에러 코드를 반환하는 방식으로 오류 처리를 하는 경우가 많다. 하지만 Rust에서는 Result
와 Option
타입을 통해 에러를 명확하게 관리할 수 있다. 이러한 에러 처리 방식은 코드의 가독성을 높이고 유지보수하기 좋다는 장점이 있으며, 책에서도 예제를 통해 그 이점을 보여준다. 에러를 코드로 다루는 Rust의 철학은 오류를 쉽게 놓치지 않고 다룰 수 있게 해주며, 실무에서도 큰 도움이 되는 개념이다.
동시성 프로그래밍 부분도 인상 깊다. C++에서 동시성 프로그래밍은 잘못 구현하면 메모리 충돌이나 데드락 같은 문제가 발생하기 쉽다. 반면, Rust는 안전성을 확보하면서도 비동기 프로그래밍을 간결하게 다룰 수 있는 방법을 제공한다. 책에서는 async/await
문법을 사용한 비동기 프로그래밍을 실용적인 관점에서 설명하며, 예제 코드와 함께 러스트가 자원 경합 문제를 얼마나 철저히 방지하는지를 보여준다. 이는 고성능 프로그램을 작성하는 데 꼭 필요한 요소로, 동시성 관리에 강한 Rust의 장점을 잘 느낄 수 있게 한다.
Rust의 제네릭과 트레이트 시스템도 흥미로운 부분이다. Rust는 C++의 템플릿과 유사한 기능을 제공하지만, 더 많은 안전성을 보장한다. 책에서는 이러한 제네릭과 트레이트의 사용법을 친절하게 설명하며, 이를 통해 코드의 재사용성을 높이는 방법을 소개한다. 트레이트 시스템 덕분에 컴파일 타임에 오류를 미리 확인할 수 있어 프로그램 안정성도 향상된다. 이를 잘 활용하면 유지보수하기 쉬운 코드를 작성할 수 있게 된다.
결론적으로 이펙티브 러스트는 러스트를 실무에서 잘 활용할 수 있게 도와주는 책이다. C++ 개발자라면 처음 접할 때 다소 낯설 수 있는 Rust의 소유권 모델, 에러 처리 방식, 동시성 관리 등을 이 책을 통해 쉽게 이해할 수 있다. Rust가 어떻게 메모리 안전성과 성능을 균형 있게 제공하는지 알고 싶은 개발자라면, 이 책에서 많은 통찰을 얻을 수 있을 것이다.
이 서평은 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.