본문 바로가기

도서 소개

러스트 클린 코드

러스트를 깊이 있게 파헤쳐서 그 진짜 핵심을 드러낸다
《러스트 클린 코드》는 러스트 고유의 언어 설계를 최대한 활용할 수 있도록 러스트다운 클린 코드와 디자인 패턴을 소개하며, 명확한 설명과 재사용 가능한 코드 예제를 통해 메타프로그래밍, 라이브러리를 직접 구현하는 방법, 플루언트 인터페이스 작성 등 다양한 주제를 다룬다. 이 과정에서 러스트의 내부 작동 원리를 이해하며, 유지보수가 쉽고 지속적인 발전이 가능한 효율적인 러스트 코드 작성법을 배울 수 있을 것이다.

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [쿠팡

 

출판사 제이펍
저작권사 Manning Publications.
원서명 Idiomatic Rust (원서 ISBN 9781633437463) 
도서명 러스트 클린 코드
부제 러스트다운 디자인 패턴과 모범사례
지은이 브렌든 매슈스
옮긴이 윤인도
감수자 (없음)
시리즈 (없음)
출판일 2025년 9월 4일
페이지 300쪽
판  형 46배판변형(188*245*14.8)
제  본 무선(soft cover)
정  가 28,000원
ISBN 979-11-94587-32-3 (93000)
키워드 Rust / pattern / 카고 / 크레이트 / 제네릭 / 클로저 / 매크로 / 이터레이터 
분  야 프로그래밍 언어 / 러스트

 

관련 사이트
아마존 도서 페이지

저작권사 도서 페이지

 

관련 시리즈

■ (없음)

 

관련 포스트

■ 2025.09.03 - [출간 전 책 소식] - 러스트의 핵심(또는 뼈대)

 

관련 도서

러스트 프로페셔널 코드

■ 강력한 러스트 매크로 작성법(출간 예정)

 

관련 파일 다운로드

https://github.com/brndnmtthws/idiomatic-rust-book

 

강의 보조 자료(교재로 채택하신 분들은 https://jpub.tistory.com/notice/1076을 통해 다음 자료를 요청하실 수 있습니다.)
■ 본문의 그림과 표

 

미리보기(앞부속, 본문 일부)

 

 

정오표 페이지
■ (등록되는 대로 링크를 걸겠습니다.)

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [쿠팡

 

도서 소개

러스트 심층 탐구. 러스트의 이론이 아닌 실용적 핵심을 파헤친다

진입 장벽이 높은 러스트의 진정한 힘을 끌어내기 위해서는 단순한 문법 습득을 넘어서 이 언어만의 고유한 설계 패턴과 관용구를 이해하고 활용하는 것이 필수적이다.

실제 프로젝트에서 러스트를 활용하기 시작했다면 이제 완전히 새로운 차원의 탐구가 시작된다. 러스트 애플리케이션에서 표준 디자인 패턴을 어떻게 적용할 수 있을까? IntoIterator는 어디서, 왜 사용해야 할까? 러스트 개발자들이 PhantomData 타입을 사랑하는 이유는 무엇일까? 이 책은 이러한 질문들 외에도 많은 궁금증에 답을 제시해준다.

《러스트 클린 코드》는 러스트 고유의 언어 설계를 최대한 활용할 수 있도록 러스트다운 클린 코드와 디자인 패턴을 소개하며, 명확한 설명과 재사용 가능한 코드 예제를 통해 메타프로그래밍, 라이브러리를 직접 구현하는 방법, 플루언트 인터페이스 작성 등 다양한 주제를 다룬다. 이 과정에서 러스트의 내부 작동 원리를 이해하며, 유지보수가 쉽고 지속적인 발전이 가능한 효율적인 러스트 코드 작성법을 배울 수 있을 것이다.

 

주요 내용
■ 사용하기 즐거운 API 만들기
■ 빌더 패턴 등의 고전적인 디자인 패턴 적용 방법
■ 함수형 프로그래밍 패턴
■ 러스트 안티패턴

 

지은이 소개

브렌든 매슈스(Brenden Matthews)

아파치 소프트웨어 재단의 멤버이자 소프트웨어 엔지니어 겸 기업가이며, 초창기부터 러스트를 사용해온 오픈소스 참여자로서 《러스트 프로페셔널 코드》(제이펍, 2024)의 저자다. 14년 이상 깃허브 기여자로 활동하며, 여러 러스트 크레이트 및 오픈소스 러스트 프로젝트에 참여했고, 제품 수준의 러스트 애플리케이션을 전문적으로 구축했다.

 

옮긴이 소개

윤인도

서울대학교에서 공학 학사와 석사 학위를 취득하고, 현재 SAP Labs Korea에서 백엔드 개발자로 근무하고 있다. 한 줄의 코드가 세상을 더 나은 곳으로 만들 수 있다는 신념을 가지고 지식을 나누기 위해 여러 기업과 대학에서 강연을 이어가고 있다. 또한 프로그래머스, 클래스101, 인프런, 베어유 등 여러 플랫폼에서 다양한 주제로 온라인 클래스도 운영하고 있으며, 저서로는 《LUVIT♥ 실전 백엔드 러스트 Axum 프로그래밍》(제이펍, 2025) 있다.

 

차례

옮긴이 머리말 x

베타리더 후기 xi

시작하며 xiii

감사의 글 xiv

이 책에 대하여 xv

표지에 대하여 xix

 

PART I 구성 요소

CHAPTER 1 러스트다운 패턴 3

1.1 이 책에서 다루는 내용 5

1.2 디자인 패턴이란? 6

1.3 이 책이 다른 이유 9

1.4 필요한 도구 10

1.5 정리하며 11

더보기
더보기

CHAPTER 2 러스트의 기본 구성 요소 13

2.1 제네릭 14

2.1.1 튜링 완전성 타입 시스템 14

2.1.2 왜 제네릭인가? 15

2.1.3 제네릭의 기초 15

2.1.4 러스트의 Option 살펴보기 19

2.1.5 마커 구조체와 팬텀 타입 19

2.1.6 제네릭 매개변수 트레이트 바운드 23

2.2 트레이트 23

2.2.1 트레이트가 객체 지향 프로그래밍이 아닌 이유 24

2.2.2 트레이트에 들어 있는 것들 25

2.2.3 객체 지향 코드를 살펴보며 트레이트 이해하기 26

2.2.4 제네릭과 트레이트 결합하기 30

2.2.5 자동으로 트레이트 도출하기 35

2.2.6 트레이트 객체 37

2.3 정리하며 40

 

CHAPTER 3 코드 흐름 43

3.1 패턴 매칭 둘러보기 44

3.1.1 패턴 매칭의 기초 44

3.1.2 ? 연산자로 간결하게 처리하기 50

3.2 함수적 러스트 53

3.2.1 러스트 함수형 프로그래밍의 기초 54

3.2.2 클로저 변수 캡처 56

3.2.3 반복자 살펴보기 57

3.2.4 iter(), into_iter(), iter_mut()로 반복자 얻기 62

3.2.5 반복자의 기능 71

3.3 정리하며 76

 

PART II 핵심 패턴

CHAPTER 4 기본 패턴 79

4.1 리소스의 획득은 초기화 80

4.1.1 C C++ RAII 81

4.1.2 러스트의 RAII 둘러보기 85

4.1.3 러스트의 RAII 요약 87

4.2 인자를 값으로 전달하기와 레퍼런스로 전달하기 89

4.2.1 값으로 전달하기 89

4.2.2 레퍼런스로 전달하기 91

4.2.3 언제 무엇을 할 것인가?: 값으로 전달하기와 레퍼런스로 전달하기 93

4.3 생성자 94

4.4 객체 멤버 가시성과 접근성 97

4.5 오류 처리 99

4.6 전역 상태 102

4.6.1 lazy-static.rs 105 / 4.6.2 once_cell 106

4.6.3 static_init 107 / 4.6.4 std::cell::OnceCell 108

4.7 정리하며 109

 

CHAPTER 5 디자인 패턴: 기본을 넘어서 111

5.1 매크로를 사용한 메타프로그래밍 112

5.1.1 기본적인 선언적 매크로 113

5.1.2 언제 매크로를 사용해야 할까요? 115

5.1.3 매크로를 사용해 미니 DSL 작성하기 121

5.1.4 DRY에 매크로 사용하기 122
5.2
선택적 함수 인자 126

5.2.1 파이썬에서 선택적 인자 살펴보기 126

5.2.2 C++에서 선택적 인자 살펴보기 127

5.2.3 러스트에는 선택적 인자가 없다 127

5.2.4 트레이트로 선택적 인자 모방하기 128

5.3 빌더 패턴 131

5.3.1 빌더 패턴 구현하기 132

5.3.2 트레이트로 빌더 강화하기 134

5.3.3 매크로로 빌더 발전시키기 135

5.4 플루언트 인터페이스 패턴 139

5.4.1 플루언트 빌더 139

5.4.2 플루언트 빌더 테스트 142

5.5 관찰자 패턴 143

5.5.1 콜백을 쓰지 않는 이유 143

5.5.2 관찰자 구현하기 144

5.6 명령 패턴 147

5.6.1 명령 패턴 정의하기 148

5.6.2 명령 패턴 구현하기 149

5.7 뉴타입 패턴 152

5.8 정리하며 155

 

CHAPTER 6 라이브러리 디자인하기 157

6.1 좋은 라이브러리 디자인 158

6.2 한 가지만, 올바르게, 잘하기 159

6.3 과도한 추상화 피하기 160

6.4 기본 타입에 충실하기 160

6.5 도구 사용 161

6.6 좋은 예술가는 베끼고, 위대한 예술가는 훔친다(표준 라이브러리에서) 162

6.7 모든 것을 문서화하고 예제를 제공하세요 162

6.8 사용자의 코드를 망치지 마세요 163

6.9 상태를 생각하세요 163

6.10 미학 고려하기 164

6.11 러스트 라이브러리의 편리한 사용성 165

6.11.1 연결 리스트 다시 살펴보기 165

6.11.2 rustdoc을 사용해 API 디자인 개선하기 167

6.11.3 더 많은 테스트를 통해 연결 리스트 개선하기 174

6.11.4 다른 사람이 디버깅하기 쉬운 라이브러리 만들기 176

6.12 정리하며 179

 

PART III 고급 패턴

CHAPTER 7 특수한 작업에 트레이트, 제네릭, 구조체 사용하기 183

7.1 상수 제네릭 184

7.2 외부 크레이트 타입에 대한 트레이트 구현하기 186

7.2.1 래퍼 구조체 187 / 7.2.2 Deref를 사용하여 래핑된 구조체 언래핑하기 187

7.3 확장 트레이트 189

7.4 블랭킷 트레이트 191

7.5 마커 트레이트 194

7.6 구조체 태깅 196

7.7 레퍼런스 객체 199

7.8 정리하며 205

 

CHAPTER 8 상태 기계, 코루틴, 매크로, 프렐류드 207

8.1 트레이트 상태 기계 208

8.2 코루틴 212

8.3 절차적 매크로 218

8.4 프렐류드 222

8.5 정리하며 226

 

PART IV 문제 피하기

CHAPTER 9 불변성 229

9.1 불변성의 장점 230

9.2 불변성이 만능이 아닌 이유 232

9.3 불변 데이터에 대해 생각하는 방법 233

9.4 러스트의 불변성 이해하기 234

9.5 불변성의 기본 개념 살펴보기 236

9.6 트레이트를 사용해 (거의) 모든 것을 불변으로 만들기 239

9.7 불변성을 위해 Cow 사용하기 240

9.8 불변 데이터 구조를 위한 크레이트 244

9.8.1 im 사용하기 244 / 9.8.2 rpds 사용하기 245

9.9 정리하며 247

 

CHAPTER 10 안티패턴 249

10.1 안티패턴이란? 250

10.2 unsafe 사용하기 251

10.2.1 unsafe는 어떤 기능을 하나요? 253

10.2.2 unsafe는 어디에 사용할 수 있나요? 254

10.2.3 언제 unsafe를 사용해야 하나요? 256

10.2.4 unsafe는 위험한가요? 257

10.3 unwrap() 사용하기 257

10.4 Vec을 사용하지 않는 것 258

10.5 너무 많은 복제 262

10.6 다형성 모방을 위한 Deref 사용 263

10.7 전역 데이터와 싱글톤 268

10.8 너무 많은 스마트 포인터 269

10.9 앞으로 나아갈 방향 270

10.10 정리하며 271

 

APPENDIX A 러스트 설치하기 273

A.1 이 책에 필요한 도구 설치하기 273

A.1.1 Homebrew를 사용하여 맥OS용 도구 설치하기 273

A.1.2 리눅스 시스템용 도구 설치하기 274

A.1.3 윈도우용 도구 설치하기 274

A.2 rustc와 다른 러스트 구성 요소를 rustup 관리하기 275

A.2.1 rustc 및 기타 구성 요소 설치하기 275

A.2.2 rustup으로 기본 툴체인 전환하기 275

A.2.3 러스트 구성 요소 업데이트하기 275

 

찾아보기 277

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

  블로그  유튜브  인스타그램  트위터  페이스북