로딩...

러스트 프로그래밍 공식 가이드

목차

  • CHAPTER 1 시작하기 1

    • 1.1 설치하기 1
    • 1.2 첫 번째 러스트 프로그램 작성하기 4
    • 1.3 카고 알아보기 9
  • CHAPTER 2 숫자 맞히기 게임의 구현 15

    • 2.1 새 프로젝트 셋업하기 16
    • 2.2 플레이어가 예측한 값 처리하기 17
    • 2.3 난수 생성하기 23
    • 2.4 난수와 사용자의 입력 비교하기 28
    • 2.5 반복문을 이용해 다중 입력 지원하기 32
  • CHAPTER 3 일반 프로그래밍 개념 39

    • 3.1 변수와 가변성 40
    • 3.2 데이터 타입 45
    • 3.3 함수 53
    • 3.4 주석 60
    • 3.5 흐름 제어 61

--- 정리선 ../rust

  • CHAPTER 4 소유권 73

    • 4.1 소유권이란? 73
    • 4.2 참조와 대여 86
    • 4.3 슬라이스 타입 93
  • CHAPTER 5 구조체를 활용한 관련 데이터의 구조화 101

    • 5.1 구조체 정의와 인스턴스 생성 102
    • 5.2 구조체를 사용하는 예제 프로그램 107
    • 5.3 메서드 문법 112
  • CHAPTER 6 열거자와 패턴 매칭 119

    • 6.1 열거자 정의하기 120
    • 6.2 match 흐름 제어 연산자 127
    • 6.3 if let을 이용한 간결한 흐름 제어 133
  • CHAPTER 7 패키지, 크레이트, 모듈로 프로젝트 관리하기 137

    • 7.1 패키지와 크레이트 138
    • 7.2 모듈을 이용한 범위와 접근성 제어 140
    • 7.3 경로를 이용해 모듈 트리의 아이템 참조하기 142
    • 7.4 use 키워드로 경로를 범위로 가져오기 150
    • 7.5 모듈을 다른 파일로 분리하기 157
  • CHAPTER 8 범용 컬렉션 161

    • 8.1 벡터에 일련의 값 저장하기 162
    • 8.2 String 타입에 UTF-8 형식의 텍스트 저장하기 168
    • 8.3 키와 값을 저장하는 해시 맵 178
  • CHAPTER 9 에러 처리 185

    • 9.1 panic! 매크로를 이용한 회복 불가능한 에러 처리 186
    • 9.2 Result 타입으로 에러 처리하기 189
    • 9.3 패닉에 빠질 것인가? 말 것인가? 200
  • CHAPTER 10 제네릭 타입, 트레이트 그리고 수명 207

    • 10.1 함수로부터 중복 제거하기 208
    • 10.2 제네릭 데이터 타입 211
    • 10.3 트레이트: 공유 가능한 행위를 정의하는 방법 220
    • 10.4 수명을 이용해 참조 유효성 검사하기 233
    • 10.5 제네릭 타입 매개변수, 트레이트 경계, 그리고 수명 248
  • CHAPTER 11 자동화 테스트 작성하기 251

    • 11.1 테스트의 작성 252
    • 11.2 테스트 실행 제어하기 268
    • 11.3 테스트의 조직화 274
  • CHAPTER 12 I/O 프로젝트: 명령줄 프로그램 작성하기 283

    • 12.1 명령줄 인수 처리하기 284
    • 12.2 파일 읽기 287
    • 12.3 모듈화와 에러 처리 향상을 위한 리팩토링 289
    • 12.4 테스트 주도 방법으로 라이브러리의 기능 개발하기 303
    • 12.5 환경 변수 다루기 310
    • 12.6 stderr을 이용해 에러 메시지 출력하기 316
  • CHAPTER 13 함수형 언어의 기능: 반복자와 클로저 321

    • 13.1 클로저: 주변 환경을 캡처하는 익명 함수 322
    • 13.2 반복자를 이용해 일련의 아이템 처리하기 337
    • 13.3 입출력 프로젝트의 개선 346
  • CHAPTER 14 카고와 crates.io 353

    • 14.1 릴리즈 프로필을 이용한 빌드 커스터마이징 354
    • 14.2 crates.io 사이트에 크레이트 발행하기 355
    • 14.3 카고 작업공간 367
    • 14.4 cargo install 명령을 이용해 crates.io에서 바이너리 설치하기 374
    • 14.5 사용자 정의 명령을 이용해 카고 확장하기 375
  • CHAPTER 15 스마트한 포인터 377

    • 15.1 Box를 이용해 힙 메모리의 데이터 참조하기 379
    • 15.2 Deref 트레이트를 이용해 스마트 포인터를 참조처럼 취급하기 384
    • 15.3 Drop 트레이트를 구현해서 메모리를 해제할 때 코드 실행하기 391
    • 15.4 Rc, 참조 카운터 스마트 포인터 395
    • 15.5 RefCell 타입과 내부 가변성 패턴 400
    • 15.6 메모리 누수의 원인이 되는 순환 참조 410
  • CHAPTER 16 자신 있는 동시성 421

    • 16.1 코드를 동시에 실행하기 위한 스레드 422
    • 16.2 공유 상태 동시성 438
    • 16.3 Sync와 Send 트레이트로 동시성 확장하기 446
  • CHAPTER 17 러스트의 객체지향 프로그래밍 기능 449

    • 17.1 객체지향 언어의 특징 450
    • 17.2 다른 타입의 값을 허용하는 트레이트 객체 454
    • 17.3 객체지향 디자인 패턴 구현 462
  • CHAPTER 18 패턴과 매칭 477

    • 18.1 패턴을 활용할 수 있는 위치 478
    • 18.2 부인 가능성: 패턴이 일치할 수도 있고 그렇지 않을 수도 있는 경우 484
    • 18.3 패턴 문법 486
  • CHAPTER 19 러스트의 고급 기능 505

    • 19.1 안전하지 않은 러스트 506
    • 19.2 고급 트레이트 517
    • 19.3 고급 타입 시스템 529
    • 19.4 고급 함수와 클로저 537
    • 19.5 매크로 541
  • CHAPTER 20 최종 프로젝트: 다중 스레드 웹서버 구축 555

    • 20.1 단일 스레드 웹서버 구현하기 556
    • 20.2 다중 스레드 서버로 전환하기 568
    • 20.3 우아한 종료와 해제 591
  • APPENDIX A 키워드 601

    • 현재 사용 중인 키워드 601
    • 향후에 사용하기 위해 예약한 키워드 603
    • 원시 식별자 603
  • APPENDIX B 연산자와 심볼 605

    • 연산자 605
    • 비연산자 심볼 607
  • APPENDIX C 상속 가능한 트레이트 613

    • 프로그래머용 출력을 위한 Debug 614
    • 일치 비교를 위한 PartialEq와 Eq 614
    • 순서를 비교하는 PartialOrd와 Ord 615
    • 값을 복제하기 위한 Clone과 Copy 616
    • 어떤 값을 고정된 크기의 값에 매핑하는 Hash 617
    • 기본값을 제공하는 Default 617
  • APPENDIX D 유용한 개발 도구 619

    • rustfmt를 이용한 자동 포매팅 619
    • rustfix 도구로 코드 수정하기 620
    • Clippy 린트 621
    • 러스트 언어 서버를 이용한 IDE 통합 623
  • APPENDIX E 에디션 625

찾아보기 627