저자

짐블랜디,제이슨오렌도프,리어노라틴달

저자:짐블랜디,제이슨오렌도프,리어노라틴달

목차


옮긴이머리말xii
베타리더후기xvi
시작하며xix

CHAPTER1시스템프로그래머,남부럽지않은도구로날개달다1
프로그래머의짐을덜어주는안전성3
맘먹은대로되는병렬프로그래밍4
그럼에도불구하고놓칠수없는빠른속도4
협업이쉬워지는개발환경5

CHAPTER2러스트둘러보기6
rustup과카고7
러스트함수10
단위테스트작성해돌려보기12
명령줄인수다루기13
웹서비스만들기18
동시성24
파일시스템과명령줄도구45

CHAPTER3기본타입54
고정된크기를갖는수치타입57
bool타입67
문자67
튜플69
포인터타입71
배열,벡터,슬라이스74
문자열타입81
타입별칭88
한걸음더나아가기88

CHAPTER4소유와이동89
소유91
이동96
Copy타입:이동의예외107
Rc와Arc:공유된소유권110

CHAPTER5레퍼런스114
값의레퍼런스115
레퍼런스다루기119
레퍼런스안전성125
공유vs.변경140
객체의바다와맞서기148

CHAPTER6표현식151
표현식언어151
우선순위와결합성153
블록과세미콜론155
선언157
if와match159
iflet162
루프162
루프의제어흐름164
return표현식166
러스트에loop가있는이유167
함수와메서드호출169
필드와요소171
레퍼런스연산자173
산술,비트별,비교,논리연산자173
배정175
타입캐스팅175
클로저177
전진,앞으로!178

CHAPTER7오류처리179
패닉179
Result182

CHAPTER8크레이트와모듈198
크레이트199
모듈204
프로그램을라이브러리로바꾸기216
src/bin디렉터리218
어트리뷰트220
테스트와문서화223
의존성지정하기233
crates,io에크레이트게시하기237
워크스페이스239
더멋진것들240

CHAPTER9스트럭트242
이름있는필드로된스트럭트243
튜플형스트럭트246
유닛형스트럭트247
스트럭트레이아웃248
impl로메서드정의하기249
연관상수254
제네릭스트럭트255
수명매개변수를갖는제네릭스트럭트257
상수매개변수를갖는제네릭스트럭트259
스트럭트타입에공통트레이트구현하기262
내부가변성263

CHAPTER10이늄과패턴268
이늄269
패턴280
큰그림295

CHAPTER11트레이트와제네릭297
트레이트의사용299
트레이트의정의와구현311
한정자가모두붙은메서드호출321
타입간의관계를정의하는트레이트323
바운드역설계332
밑바탕으로서의트레이트336

CHAPTER12연산자오버로딩337
산술연산자와비트별연산자339
동치비교345
순서비교349
Index와IndexMut352
기타연산자355

CHAPTER13유틸리티트레이트357
Drop359
Sized362
Clone366
Copy367
Deref와DerefMut368
Default372
AsRef와AsMut374
Borrow와BorrowMut376
From과Into378
TryFrom과TryInto382
ToOwned383
Borrow+ToOwned=Cow384

CHAPTER14클로저387
변수캡처하기389
함수와클로저타입392
클로저성능395
클로저와안전성396
콜백403
효율적인클로저사용법408

CHAPTER15이터레이터411
Iterator와IntoIterator트레이트413
이터레이터생성하기415
이터레이터어댑터423
이터레이터소비하기443
나만의이터레이터구현하기460

CHAPTER16컬렉션466
둘러보기467
Vec468
VecDeque486
BinaryHeap489
HashMap와BTreeMap490
HashSet와BTreeSet498
해싱502
사용자정의해싱알고리즘사용하기504
표준컬렉션에서한걸음더나아가기506

CHAPTER17문자열과텍스트507
유니코드에대한몇가지배경지식508
문자(char)511
String과str516
값형식화하기537
정규표현식552
정규화555

CHAPTER18입력과출력559
리더와라이터560
파일과디렉터리577
네트워킹587

CHAPTER19동시성590
포크-조인병렬처리592
채널605
변경할수있는공유된상태620
러스트로동시적코드를작성한다는건바로이런것638

CHAPTER20비동기프로그래밍639
동기식에서비동기식으로641
비동기식클라이언트와서버667
기본제공퓨처와이그제큐터:퓨처를다시폴링해도좋은시점은언제일까?689
핀설정695
비동기식코드는언제써야좋을까?703

CHAPTER21매크로706
매크로의기초708
기본제공매크로715
매크로디버깅718
json!매크로만들기719
매칭중에발생하는구문오류피하기733
macro_rules!에서한걸음더나아가기734

CHAPTER22안전하지않은코드736
무엇으로부터안전하지않다는걸까?737
안전하지않은블록739
예:효율적인아스키문자열타입740
안전하지않은함수743
안전하지않은블록vs,안전하지않은함수745
미정의동작746
안전하지않은트레이트749
원시포인터751
유니언으로메모리재해석하기774
유니언매칭하기777
유니언빌려오기777

CHAPTER23외부함수778
공통데이터표현찾기779
외부함수와변수선언하기783
라이브러리에있는함수사용하기785
libgit2의원시인터페이스790
libgit2의안전한인터페이스797
결론810

찾아보기812

출판사 서평

《러스트프로그래밍공식가이드》에이어꼭읽어야할책!
아마존No.1러스트서적!

시스템프로그래밍은컴퓨팅세계의기반을제공한다.성능에민감한코드를작성하려면프로그래머가메모리,프로세서시간,기타시스템자원이쓰이는방식을제어할수있는프로그래밍언어가필요하다.러스트시스템프로그래밍언어는메모리관리오류에서스레드간의데이터경합까지광범위한종류의실수를잡아내는모던타입시스템과이제어를결합한다.

이책은메모리안전성과신뢰할만한동시성에예측가능한성능을더한러스트의기능이어떤식으로메모리소모량과프로세서사용량의제어권을프로그래머에게제공하는지보여준다.경험이많은시스템프로그래머라면이실용적인가이드를통해서러스트로성능과안전성사이의간극을성공적으로메우는법을배울수있을것이다.

■러스트의기본데이터타입그리고소유와차용의핵심개념
■트레이트와제네릭을써서유연하고효율적인코드를작성하는법
■데이터경합없이빠른멀티스레드코드를작성하는법
■러스트의핵심도구:클로저,이터레이터,비동기프로그래밍
■컬렉션,문자열과텍스트,입력과출력,매크로,안전하지않은코드,외부함수인터페이스