컨텐츠상세보기

러스트 프로그래밍 공식 가이드
러스트 프로그래밍 공식 가이드
  • 저자<스티브 클라브닉>,<캐롤 니콜스> 공저/<장현희> 역
  • 출판사제이펍
  • 출판일2020-06-03
  • 등록일2022-04-12
보유 1, 대출 0, 예약 0, 누적대출 9, 누적예약 0

책소개

러스트 핵심 멤버 2인이 집필하고 RUST 2018이 반영된 국내 첫 러스트 공식 문서! 

사람에게 더 친숙한 고수준의 프로그래밍과 저수준의 제어는 프로그래밍 언어 디자인에서 서로 상충하는 경향이 있다. 러스트는 이러한 상충관계에 도전장을 내민 언어이다. 러스트는 강력한 기술적 기능과 훌륭한 개발자 경험 사이의 균형을 적절히 갖춘 언어이다. 러스트는 스택오버플로우 설문 조사에서 4년간 개발자 대상 가장 인기 있는 프로그래밍 언어 1위를 차지했다. 국내에 처음으로 출간되는 러스트 도서, 『러스트 프로그래밍 공식 가이드』를 통해 러스트에 대한 갈증을 해소하시기 바란다.

저자소개

러스트 문서화 팀을 이끌고 있으며, 러스트의 핵심 개발자 중 한 명이다. 콘퍼런스의 발표자로 다양한 오픈 소스에 기여하고 있으며, 그전에는 ‘루비(Ruby)’와 ‘루비 온 레일즈(Ruby on Rails)’ 관련 프로젝트에 참여했다. 지금은 모질라(Mozilla)에 근무하고 있다.

목차

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

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〈T〉를 이용해 힙 메모리의 데이터 참조하기 379
    15.2 Deref 트레이트를 이용해 스마트 포인터를 참조처럼 취급하기 384
    15.3 Drop 트레이트를 구현해서 메모리를 해제할 때 코드 실행하기 391
    15.4 Rc〈T〉, 참조 카운터 스마트 포인터 395
    15.5 RefCell〈T〉 타입과 내부 가변성 패턴 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