러스트 프로페셔널 코드
2024년 09월 11일 출간
국내도서 : 2024년 09월 04일 출간
- eBook 상품 정보
- 파일 정보 pdf (10.62MB)
- ISBN 9791193926581
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 불가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 17,010원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
베타리더 후기 xiv
시작하며 xvi
이 책에 대하여 xvii
감사의 글 xxi
표지에 대하여 xxii
CHAPTER 1 러스트스러운 느낌 1
1.1 러스트는 무엇인가? 2
1.2 러스트는 무엇이 독특한가? 4
__1.2.1 러스트는 안전하다 5 / 1.2.2 러스트는 현대적이다 6 / 1.2.3 순수 오픈 소스로서의 러스트 7 / 1.2.4 러스트와 다른 언어 비교 7
1.3 언제 러스트를 써야 하는가? 8
__1.3.1 러스트 사용 사례 9
1.4 필요한 도구들 10
1.5 요약 10
PART I 프로 러스트
CHAPTER 2 카고로 프로젝트 관리하기 13
2.1 카고 둘러보기 14
__2.1.1 기본 사용법 14 / 2.1.2 새 애플리케이션이나 라이브러리 만들기 15 / 2.1.3 빌드, 실행, 테스트 17 / 2.1.4 툴체인 간 변경 18
2.2 의존성 관리 19
__2.2.1 Cargo.lock 파일 다루기 22
2.3 기능 플래그 22
2.4 종속성 패치하기 25
__2.4.1 간접 종속성 28 / 2.4.2 종속성 패치의 모범 사례 28
2.5 크레이트 게시 29
__2.5.1 CI/CD 통합 29
2.6 C 라이브러리에 연결하기 32
2.7 바이너리 배포 35
__2.7.1 교차 컴파일 36 / 2.7.2 정적 연결 바이너리 만들기 37
2.8 러스트 프로젝트 문서화하기 38
__2.8.1 문서화 예제 41
2.9 모듈 42
2.10 작업 공간 46
2.11 전용 빌드 스크립트 48
2.12 임베디드 환경용 러스트 프로젝트 51
__2.12.1 메모리 할당 52
2.13 요약 52
CHAPTER 3 러스트 도구 이용하기 53
3.1 러스트 도구 개요 54
3.2 rust-analyzer를 이용하여 러스트 통합 개발 환경에 통합 55
__3.2.1 마법 완성 56
3.3 rustfmt로 코드 정리하기 59
__3.3.1 rustfmt 설치하기 61 / 3.3.2 rustfmt 설정하기 61
3.4 코드 품질을 향상하기 위한 Clippy의 사용 62
__3.4.1 Clippy 설치하기 62 / 3.4.2 Clippy의 린트 63 / 3.4.3 Clippy 설정하기 65 / 3.4.4 Clippy 제안을 자동으로 적용하기 65 / 3.4.5 Clippy를 CI/CD에서 사용하기 66
3.5 sccache로 컴파일 시간 단축하기 67
__3.5.1 sccache 설치하기 67 / 3.5.2 sccache 설정하기 68
3.6 VS Code 등의 통합 개발 환경과 통합하기 68
3.7 툴체인 사용하기: 안정이냐 nightly냐 69
__3.7.1 nightly 전용 기능 70 / 3.7.2 공개된 크레이트에 nightly 채널 사용하기 70
3.8 추가적인 도구들: cargo-update, cargo-expand, cargo-fuzz, cargo-watch, cargo-tree 71
__3.8.1 패키지를 최신으로 업데이트하기: cargo-update 72 / 3.8.2 매크로 디버깅하기: cargo-expand 72 / 3.8.3 cargo-fuzz로 테스트하기 73 / 3.8.4 cargo-watch로 반복적 개발 74 / 3.8.5 종속성 검사: cargo-tree 75
3.9 요약 76
PART II 코어 데이터
CHAPTER 4 데이터 구조 79
4.1 String, str, &str, &'static str에 대한 설명 80
__4.1.1 String과 str 80 / 4.1.2 효율적으로 문자열 사용하기 81
4.2 슬라이스와 배열 이해하기 84
4.3 벡터 87
__4.3.1 Vec으로 더 깊이 뛰어들기 87 / 4.3.2 벡터 래핑하기 89 / 4.3.3 벡터 관련 타입 89
4.4 맵 90
__4.4.1 사용자 지정 해시 함수 91 / 4.4.2 해시 가능한 타입 만들기 92
4.5 러스트 타입: 기본형, 구조체, 열거형, 별칭 93
__4.5.1 기본 타입 사용하기 93 / 4.5.2 튜플 사용하기 97 / 4.5.3 구조체 사용하기 98 / 4.5.4 열거형 사용하기 101 / 4.5.5 별칭 사용하기 104
4.6 Result로 오류 처리하기 105
4.7 From/Into로 타입 변환하기 107
__4.7.1 TryFrom과 TryInto 109 / 4.7.2 From과 Into를 사용하는 타입 변환의 모범 사례 110
4.8 러스트 타입으로 FFI 호환성 처리하기 110
4.9 요약 112
CHAPTER 5 메모리 작업 113
5.1 메모리 관리: 힙과 스택 114
5.2 소유권 이해하기: 복사, 대여, 참조, 이동 116
5.3 깊은 복사 118
5.4 복사 피하기 119
5.5 박스할 것인가 말 것인가: 스마트 포인터 121
5.6 참조 카운트 125
5.7 쓰기 시 복제 128
5.8 맞춤 할당자 132
__5.8.1 맞춤 할당자 작성하기 133 / 5.8.2 보호 메모리를 위한 맞춤 할당자 만들기 136
5.9 스마트 포인터 요약 141
5.10 요약 142
PART III 정확성
CHAPTER 6 단위 테스트 145
6.1 러스트에서의 테스트는 어떤 차이가 있는가? 146
6.2 내장 테스트 기능 살펴보기 148
6.3 테스트 프레임워크 149
6.4 테스트하지 말아야 할 것: 컴파일러가 당신보다 더 잘 아는 이유 153
6.5 병렬 테스트 특수 사례와 전역 상태 처리 154
6.6 리팩터링에 대한 고려 160
6.7 리팩터링 도구 161
__6.7.1 재형식화 161 / 6.7.2 이름 바꾸기 161 / 6.7.3 재배치 163 / 6.7.4 다시 쓰기 163
6.8 코드 커버리지 165
6.9 변화하는 생태계에 대처하기 167
6.10 요약 168
CHAPTER 7 통합 테스트 169
7.1 통합 테스트와 단위 테스트 비교 170
7.2 통합 테스트 전략 173
7.3 내장 통합 테스트와 외부 통합 테스트 비교 175
7.4 통합 테스트 라이브러리와 도구 176
__7.4.1 assert_cmd를 사용하여 CLI 애플리케이션 테스트하기 176 / 7.4.2 통합 테스트에 proptest 사용하기 178 / 7.4.3 다른 통합 테스트 도구 179
7.5 퍼즈 테스트 180
7.6 요약 184
PART IV 비동기 러스트
CHAPTER 8 비동기 러스트 187
8.1 런타임 189
8.2 비동기식으로 사고하기 190
8.3 Futures: 비동기 작업 결과 처리하기 192
__8.3.1 #[tokio::main]으로 런타임 정의하기 194
8.4 async와 .await: 언제 그리고 어디서 사용하는가 195
8.5 async으로 하는 동시성과 병렬성 197
8.6 async 관찰자 구현하기 202
8.7 동기식과 비동기식을 혼합하기 208
8.8 async를 사용하면 안 될 때 210
8.9 비동기 코드의 추적과 디버깅 211
8.10 테스트 시 비동기 다루기 214
8.11 요약 216
CHAPTER 9 HTTP REST API 서비스 만들기 217
9.1 웹 프레임워크 고르기 218
9.2 아키텍처 만들기 219
9.3 API 설계 220
9.4 라이브러리와 도구 221
9.5 애플리케이션 기본 틀 작성 223
__9.5.1 main() 223 / 9.5.2 init_tracing() 224 / 9.5.3 init_dbpool() 225
9.6 데이터 모델링 227
__9.6.1 SQL 스키마 227 / 9.6.2 데이터와 인터페이싱하기 228
9.7 API 경로 선언하기 232
9.8 API 경로 구현 233
9.9 오류 처리 235
9.10 서비스 실행 237
9.11 요약 241
CHAPTER 10 HTTP REST API 명령행 도구 만들기 243
10.1 사용할 도구와 라이브러리 결정 244
10.2 CLI 설계하기 245
10.3 명령 선언하기 246
10.4 명령 구현하기 248
10.5 요청의 구현 250
10.6 오류를 적절히 처리하기 251
10.7 CLI 검사하기 252
10.8 요약 255
PART V 최적화
CHAPTER 11 최적화 259
11.1 무비용 추상화 260
11.2 벡터 261
__11.2.1 벡터 메모리 할당 261 / 11.2.2 벡터 반복자 264 / 11.2.3 Vec과 슬라이스를 이용한 빠른 복사 266
11.3 SIMD 267
11.4 Rayon을 통한 병렬화 269
11.5 러스트를 사용하여 다른 언어 가속화하기 272
11.6 이제부터 나아가야 할 길 273
11.7 요약 274
APPENDIX A 설치 지침 275
찾아보기 279
이 책은 초중급 러스트 개발자가 언어, 도구, 데이터 구조, 메모리 관리, 테스트, 비동기 프로그래밍, 모범 사례를 최대한 빨리 익히는 데 초점을 맞추고 있다. 이 책을 다 읽을 때쯤이면 관용적(또는 러스트적(Rustaceous)) 러스트로 출시 품질에 준하는 소프트웨어 시스템을 구축하는 데 자신감을 갖게 될 것이다. 이 책은 러스트 언어나 그 도구에 대한 완전한 참고서는 아니다. 대신 도움이 될 만한 것에 주목하고 있다. (1쪽)
러스트가 제공하는 다양한 도구를 활용하면 코드 생산성을 향상하고 고품질 소프트웨어를 생산하는 데 필요한 작업량을 줄일 수 있다. 러스트의 컴파일러인 rustc는 LLVM을 기반으로 구축되었으므로 러스트는 LLVM의 디버거인 LLDB 같은 LLVM에서 제공하는 많은 도구를 그대로 이용할 수 있다. 이런 도구 이외에도 러스트에서 제공하는 다양한 러스트용 도구를 알아보자. (53쪽)
다른 언어와 마찬가지로 러스트로 작업할 때에는 데이터 구조와 상호작용하는 데 많은 시간이 걸릴 것이다. 러스트는 최신 프로그래밍 언어의 데이터 구조에서 보이는 대부분의 기능을 지원하는 것은 물론, 뛰어난 안정성과 성능 역시 제공한다. 러스트의 핵심 데이터 타입을 파악하면 패턴이 자주 반복되므로 언어의 나머지 부분이 매우 명확해진다. / 이 장에서는 데이터에 대한 접근 방식에서 러스트가 다른 언어와 어떻게 다른지를 알아보고, 핵심 데이터 타입과 구조를 파악하여, 이를 효과적으로 사용하는 방법을 알아본다. 또한 비러스트 소프트웨어와 통합하기 위해 러스트의 기본 타입과 C 타입을 매핑하는 방법에 대해서도 살펴본다. (79쪽)
러스트는 소유권(ownership)이라는 새로운 프로그래밍 개념을 도입했는데, 이는 다른 언어와 차별점을 이루는 점 중 하나이며, 소유권을 통해서 안전성을 보장한다. 소유권은 메모리가 범위 내에 있는지, 공유되고 있는지, 범위를 벗어났는지, 또는 오용되고 있는지 컴파일러가 알 수 있는 방법이다. 컴파일러의 대여 검사기(borrow checker)는 작은 크기의 소유권 규칙을 적용한다. 그 규칙은 모든 값에는 소유자가 있어야 하고, 한 번에 한 명의 소유자만 있을 수 있으며, 소유자가 범위를 벗어나면 값이 삭제된다는 것이다. (116쪽)
러스트에 내장된 통합 테스트는 대부분의 사람들에게 도움이 되지만, 만병통치약은 아니다. 때로는 외부 통합 테스트 도구를 활용해야 할 때도 있다. 예를 들어 러스트로 만든 HTTP 서비스를 테스트하는 데에는 curl이나 HTTPie같이 간단한 (플랫폼에 상관없이 사용 가능한) 툴이 가장 잘 맞는다. 이러한 도구는 딱히 러스트와 관련이 없지만, 언어 수준이 아닌 시스템 수준에서 동작하기 때문에 좀 더 일반적인 도구다. (175쪽)
러스트의 비동기는 다른 언어에서 잘 작동하는 많은 부분을 빌려온 것 외에도 고유한 기능이 있지만, 다른 언어에서 접할 수 있는 것과 유사하다. 자바스크립트, 파이썬, C++의 std::async 같은 비동기 개념에 익숙하다면 러스트의 비동기에 적응하는 데 문제가 없을 것이다. 그러나 러스트는 한 가지 큰 차이점이 있다. 언어 자체는 비동기 런타임 구현을 제공하거나 규정하지 않는다. 러스트는 Future 트레이트, async 키워드, .await 문만 제공한다. 구현 세부 사항은 대부분 서드파티 라이브러리에 일임한다. (189쪽)
러스트의 중요한 특징 중 하나는 무비용 추상화(zero cost abstraction)다. 요컨대 러스트의 추상화를 통해서 추가적인 실행 부하 없는, 최적화된 기계 코드를 생성하는 높은 수준의 코드를 작성할 수 있다. 러스트의 컴파일러는 추가 부하 없이 최적의 방법으로 높은 수준의 러스트 코드를 낮은 수준의 기계 코드로 변경하는 방법을 알아낸다. 성능 함정(performance trap)에 대해 걱정할 필요 없이 러스트의 추상화를 안전하게 사용할 수 있다. (260쪽)
러스트 프로페셔널로 가는 길, 실전 중심의 마스터 클래스
러스트 실력을 높이는 데 답답함을 느끼나요? 이 책 《러스트 프로페셔널 코드》는 여러분을 러스트 마스터로 도약하게 할 최고의 가이드입니다. 시스템 프로그래밍부터 웹 개발, 비동기 프로그래밍까지 실전에서 바로 사용할 수 있는 풍부한 예제를 통해 러스트의 진정한 힘을 경험해보세요. 또한, 프로젝트 관리 도구, 디자인 패턴, 코드 분석 및 테스트 등 프로의 노하우를 한 권에 담아 개발자 여러분의 역량을 한층 더 강화해줄 것입니다.
러스트 언어의 전반적인 개념, 철학, 작동 원리 등을 포괄적으로 이해하고, 도구의 한계와 가능성을 명확히 이해하도록 돕는 이 책은, 러스트를 사용하여 신속하게 생산성을 높일 수 있는 방법을 제시합니다. 마치 경험이 풍부한 선배 프로그래머가 이제 막 여러 문제를 겪기 시작한 후배에게 해결책을 차근차근 알려주는 느낌으로 구성하여 실용적이면서도 깊이 있는 해설을 담았습니다. 이를 통해 언어를 심도 있게 이해하도록 도우며, 러스트 생태계의 다양한 면면을 살펴봄으로써 보다 넓은 시야를 갖고 문제를 해결할 수 있도록 안내합니다.
이 책은 러스트의 데이터 구조와 메모리 관리 모델을 상세히 설명하며, 소유권 개념, 스마트 포인터, 맞춤 할당자와 같은 핵심 주제를 다룹니다. 정확한 테스트 기법과 비동기 프로그래밍의 핵심을 익히고, 러스트의 최적화 방법까지 상세히 다루어 최적의 성능을 끌어내는 비법을 전수합니다. 또한, HTTP REST API 서비스와 명령행 도구를 만드는 실습을 통해 실제 프로젝트에 바로 적용할 수 있는 능력을 기릅니다.
《러스트 프로페셔널 코드》는 정체된 러스트 실력 향상을 극복하는 데 큰 도움이 되는 책입니다. 풍부한 예제와 실전에서 바로 활용할 수 있는 조언을 통해, 러스트의 잠재력을 극대화하고, 실전에서 러스트 마스터로 거듭나보세요. 러스트 실력을 한 단계 올리고 싶은 분들께 강력히 추천합니다.
주요 내용
● 시스템 프로그래밍과 웹 개발을 아우르는 러스트 핵심 기술
● 러스트 도구 활용과 효과적인 테스팅 방법론
● 비동기 및 동시성 프로그래밍 마스터하기
● 실전에 바로 적용 가능한 API 설계 및 구현 기법
● 효율적인 메모리 관리와 성능 최적화 전략
작가정보
1990년대 후반부터 웹 개발자로 일해왔다. 베이직과 파스칼로 프로그래밍에 입문했고, 다양한 언어로 자작 게임을 개발하고 있다. 신화와 역사, 판타지와 SF를 좋아하고, 록과 헤비메탈 음악을 즐기며, 8비트와 펜티엄 이전의 고전 게임과 애니메이션 마니아다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)