본문 바로가기

오탈자 정보

[프로그래밍 러스트(개정판)]_오탈자

현재까지 발견된 이 책의 오탈자 정보와 오류를 안내합니다. 번역과 편집 시에 미처 확인하지 못하고 불편을 끼쳐드려 죄송하다는 말씀을 드립니다. 아래의 오탈자 사항은 추후 재쇄 시에 반영하도록 하겠습니다.

 

이외의 오탈자 정보를 발견하시면 옮긴이(sungmann.cho@gmail.com)나 출판사(help@jpub.kr)로 연락주시면 고맙겠습니다. 

 

최종수정일자: 2024년 2월 1일 
2쇄본 오탈자

434쪽 3번째 줄에서(컴쟁이 님 지적: 쉼표 위치 변경)

peek 호출은 기본 이터레이터에서 다음 아이템을 하나 꺼내 보고 있으면, 이를 다음번 next 호출 시
peek 호출은 기본 이터레이터에서 다음 아이템을 하나 꺼내 보고, 있으면 이를 다음번 next 호출 시

 

479쪽 밑에서 13번째 에서(류치훈 님 지적)

slice와 slice_mut와 똑같지만 슬라이스의 끝에서 시작한다는 점이 다르다. 

split과 split_mut와 똑같지만 슬라이스의 끝에서 시작한다는 점이 다르다.

 

649쪽 그림 20-2 비동기 함수의 블로킹 구간에서(컴쟁이 님 지적: 캡션 텍스트 2번 변경)

async_std::block_on async_std::task::block_on

 

649쪽 끝줄에서(컴쟁이 님 지적)

다음 main이 이 퓨처를 async_std::block_on에 넘긴다.  다음 main이 이 퓨처를 async_std::task::block_on에 넘긴다.

 

 

최종수정일자: 2024년 1월 17일 
1쇄본 오탈자

xii쪽 4번째 줄에서(옮긴이 지적: 일관성을 위해서 '마크 러시노비치' 앞에 있는 em dash 붙여쓰기)

— 마크 러시노비치  —마크 러시노비치

 

xii쪽 6번째 줄에서(옮긴이 지적)

신경써야 할 것도 많기 때문이죠.  신경 써야 할 것도 많기 때문이죠.

xiii쪽 밑에서 7번째 줄에서(옮긴이 지적)

장기전을 벌어야 하기 때문이죠.  장기전을 벌야 하기 때문이죠.

 

xiii쪽 각주 6번에서 링크 교체(옮긴이 지적)

https://source.chromium.org/chromium/chromium/src/+/main:chrome/browser/ui/views/omnibox/omnibox_row_view.h;l=60,63,68,71 

 https://source.chromium.org/search?q=%22%2F%2F%20Non-owning%20pointer%20%22

 

xx쪽 5번째 줄에서(옮긴이 지적: '제한된 자원을 다루는' 강조하기)

제한된 자원을 다루는 프로그래밍이다. ⇒ 제한된 자원을 다루는 프로그래밍이다.

 

4쪽 각주 16번에서(옮긴이 지적: 일관성을 위해서 키캡 문자로 수정)

(또는 https://bit.ly/strous)  (단축 URL https://bit.ly/strous)

 

6쪽 10번째 줄에서(옮긴이 지적)

알아보겠다.  알아다.


10쪽 '러스트 함수' 단락 3번째 줄에서(옮긴이 지적)

https://en.wikipedia.org/wiki/Euclidean_algorithm https://ko.wikipedia.org/wiki/유클리드_호제법

 

17쪽 밑에서 6번째 줄에서(옮긴이 지적)

프로그램이 정상 종료됐다면 0을, 그렇지 않고 뭔가 틀어졌으면 

 

프로그램이 정상 종료됐다면 0을, 그렇지 않고 뭔가 틀어졌

17쪽 각주 삭제(옮긴이 지적:
이후 각주 번호 수정)

옮긴이 실제로는 C, C++도 main에서 아무것도 반환하지 않도록 할 수 있다. 

 
옮긴이 실제로는 C, C++도 main에서 아무것도 반환하지 않도록 할 수 있다.

 

19쪽 actix-gcd라는 이름의 새 패키지를 만드는 것과 관련해(옮긴이 지적)

19쪽 첫 줄 "먼저, 카고로 actix-gcd라는 이름의 새 패키지를 만든다." 문장 끝에 다음 내용을 옮긴이 각주로 삽입합니다.


이번 절에 수록된 actix-gcd 예제를 최신 버전의 러스트로 빌드하면 오류가 발생한다. 이 문제를 해결하려면 Cargo.toml과 main.rs의 내용을 https://github.com/ProgrammingRust/examples/commit/268dd0036649bedbe3284abbacc7f832a4c30f22와 같이 수정하면 된다.

 

20쪽 밑에서 3번째 줄에서(옮긴이 지적)

|| 세로 막대 사이에는 

 

세로 막대 || 사이에는

 

34쪽 그림 2-4 '복소평면과 이미지 픽셀 간의 관계'에서 가운데 캡션(옮긴이 지적)

주어진 (행, 열)에 대응하는 복소점

 주어진 (열, 행)에 대응하는 복소점

 

34쪽 그림 2-4 '복소평면과 이미지 픽셀 간의 관계'에서 아래 캡션(옮긴이 지적)

픽셀 (bounds.1 - 1, bounds.0 - 1)

픽셀 (bounds.0 - 1, bounds.1 - 1)

 

37쪽 10번째 줄에서(옮긴이 지적)

타입인 ()다. 가질 수 있는 값이 ()라고

타입인 ()다. 가질 수 있는 값이 ()라고

 

70쪽 밑에서 3번째 줄에서(옮긴이 지적)

가질 수 있는 값이 ()라고

가질 수 있는 값이 ()라고

 

73쪽 5~6번째 줄에서(옮긴이 지적: '또는' 강조하기)

‘싱글 라이터 또는 멀티플 리더single writer or multiple readers’ 규칙을

‘싱글 라이터 또는 멀티플 리더single writer or multiple readers’ 규칙을

 

136쪽 6번째 줄에서(옮긴이 지적: 'static 따옴표에도 코드서체가 적용되어야 함)

('static 값을 가리킬 수도 있다는 건 예외로 해두자).

 

('static 값을 가리킬 수도 있다는 건 예외로 해두자).

 

157쪽 2번째 줄에서(옮긴이 지적)

if는 항상 ()를  if는 항상 ()

 

158쪽 4~5번째 줄에서(옮긴이 지적)

첫 번째 변수 line의 타입은 Result<String, io::Error>이고, 두 번째 변수 line의 타입은 String이다.

첫 번째 line 변수의 타입은 Result<String, io::Error>이고, 두 번째 line 변수의 타입은 String이다.

 

160쪽 1~2번째 줄에서 (옮긴이 지적)

와일드카드 패턴 _는  와일드카드 패턴 _

 

181쪽 7번째 줄에서(옮긴이 지적: '그' 강조하기)

그 함수의 호출부로 이동해  함수의 호출부로 이동해

 

211쪽 코드 1행 주석에서(옮긴이 지적)

`std::fs::File`를 가져온다.  `std::fs::File` 가져온다.

 

213쪽 밑에서  3번째 줄에서(옮긴이 지적)

절대 경로는 ::로 시작하며,  절대 경로는 ::로 시작하며,

 

229쪽 2번째 줄에서(옮긴이 지적)

*기울인 꼴***굵은 꼴**을  *기울인 꼴*과 **굵은 꼴**

 

229쪽 끝줄에서(옮긴이 지적: 'lib.rs'와 'main.rs'에 파일명 서체 적용하기)

다음 코드를 lib.rs나 main.rs 맨 위에 두면 된다.

다음 코드를 lib.rs나 main.rs 맨 위에 두면 된다.

 

234쪽 밑에서 6번째 줄에서(옮긴이 지적: '유의적 버전 관리' 강조하지 않기)

호환성 규칙은 유의적 버전 관리(https://semver.org/)에 뿌리를 두고 있다. 

 

호환성 규칙은 유의적 버전 관리(https://semver.org/)에 뿌리를 두고 있다.

 

255쪽 밑에서 2번째 줄에서(옮긴이 지적: '<꺾쇠괄호>' 강조하지 않기)

제네릭 스트럭트 정의에서 <꺾쇠괄호> 안에 쓰는 타입 이름을
제네릭 스트럭트 정의에서 <꺾쇠괄호> 안에 쓰는 타입 이름을

 

259쪽 밑에서 2번째 줄에서(옮긴이 지적)

Polynomials은 크기가 동적으로 늘어날 수 없으므로  Polynomials 크기가 동적으로 늘어날 수 없으므로

 

263쪽 밑에서 5번째 줄에서(옮긴이 지적: '레퍼런스 카운팅' 강조하지 않기)

Rc가 레퍼런스 카운팅을 뜻한다는 점과 ⇒ Rc가 레퍼런스 카운팅을 뜻한다는 점과

 

264쪽 2번째 줄에서(옮긴이 지적: 'File'에 이탤릭체 적용하지 않기)

데이터(File)를 조금 쓰고 싶다는 것이다. ⇒ 데이터(File)를 조금 쓰고 싶다는 것이다.

 

266쪽 밑에서 2번째 줄에서(옮긴이 지적)

Err가 반환된다). ⇒ Err 반환된다).

 

282쪽 표 10-1 '패턴'에서 4행 '변수' 설명에서(옮긴이 지적)

_와 비슷하나  _ 비슷하나

 

293쪽 4~5번째 줄에서(옮긴이 지적)

패턴 Point3d { x, y, z }는 Point3d 스트럭트 타입의 모든 값과 매칭되고, 
패턴 Track { album, track_number, title, .. }은 Track 스트럭트 타입의 모든 값과 매칭되고,

 

298쪽 첫 코드의 4행 'fn write_all(&mut self, buf: &[u8]) -> Result<()> { ... }' 위빈 줄 넣기(옮긴이 지적)

 

311쪽 밑에서 5번째 줄에서(옮긴이 지적: 뒤에 마침표 넣기)

써서 풀 수 있긴 하지만 약간 복잡하다)  써서 풀 수 있긴 하지만 약간 복잡하다).

 

314쪽 첫 코드의 7행 '...' 위 빈 줄 넣기(옮긴이 지적)

 

314쪽 6번째 줄에서(옮긴이 지적: '.next()'에 이탤릭체 적용하지 않기)

(.next())와 ⇒ (.next())와

 

3594번째 줄에서(옮긴이 지적: 뒤에 쉼표 넣기)

실행문의 끝에서  실행문의 끝에서,

 

408쪽 두 번째 코드의 두 번째 주석 아래에서(옮긴이 지적: 아래 줄에 있는 여는 괄호 '{'를 윗줄로 옮기기)

fn add_route(&mut self, url: &str, callback: fn(&Request) -> Response)
{


fn add_route(&mut self, url: &str, callback: fn(&Request) -> Response) {

 

482쪽 두 번째 코드문 아래 문장에서(옮긴이 지적)

이러한 정렬 키-값은 정렬 과정에서 캐싱되지 않으므로  이러한 정렬 키값은 정렬 과정에서 캐싱되지 않으므로

 

511쪽 '텍스트 방향성' 코드에서(정재선 님 지적)

assert_eq!("בוט ברע".chars().next(), Some('ע')); 
 assert_eq!("ערב טוב".chars().next(), Some('ע')); 

 

556쪽 밑에서 5~4번째 줄에서(정재선 님 지적)

예를 들어 베트남어에 있는 단어인 Ph의 결합 정도가 가장 높은 표현은 세 개의 문자로 된 문자
열 "Ph\u{1edf}"인데, 이때 성조 기호 ‘□’와 모음 기호 ‘□는 
 예를 들어 베트남어에 있는 단어인 Ph의 결합 정도가 가장 높은 표현은 세 개의 문자로 된 문자
열 "Ph\u{1edf}"인데, 이때 성조 기호 ‘  ̉ ’와 모음 기호 ‘ ’는

 

557쪽 밑에서 8번째 줄에서(옮긴이 지적)

정규화 형식 D(NFDNormalization Form D)  정규화 형식 D(NFDNormalization Form D) 

 

558쪽 두 번째 코드의 4~5행에서(옮긴이 지적: 번 동일하게 수정요망)

assert_eq!("Pho ̛̉".nfd().collect::<String>(), assert_eq!("Phở".nfd().collect::<String>(),

 

638쪽 8번째 줄에서(옮긴이 지적)

부분은 23장의 'libgit2를 위한 안전한 인터페이스' 절에 있는 예를 참고하자).
부분은 23장의 'libgit2 안전한 인터페이스' 절에 있는 예를 참고하자).

 

668쪽 밑에서 9번째 줄의 'tokio 크레이트는' 앞에 글머리 기호 삽입요망(옮긴이 지적)

tokio 크레이트는  tokio 크레이트는

 

716쪽 끝줄에서(옮긴이 지적)

html#environment-variables-cargo-sets-for-crate)를 참고하자. 

html#environment-variables-cargo-sets-for-crates)를 참고하자.

 

722쪽 표 21-2 'macro_rules!가 지원하는 프래그먼트 타입'의 '매칭' 열 5~7행에서(옮긴이 지적)

패턴(282쪽 참고)
아이템(158쪽 참고)  
블록(157쪽 참고)

패턴(280쪽 참고)
아이템(157쪽 참고)

블록(155쪽 참고)

 

735쪽 밑에서 4번째 줄에서(옮긴이 지적)

cargo/reference/build-scripts.html#case-study-code-generation)를 보면 
cargo/reference/build-script-examples.html)를 보면

 

754쪽 3~4번째 줄에서(옮긴이 지적)

23장의 'libgit2를 위한 안전한 인터페이스' 절에서는
23장의 'libgit2 안전한 인터페이스' 절에서는

 

758쪽 밑에서 2번째 줄에서(옮긴이 지적: '정렬alignment' 강조하기)

정렬alignment 정렬alignment

 

779쪽 표 23-1의 오른쪽 열 끝줄에서(옮긴이 지적)

*mut c_void, const c_void  *mut c_void, *const c_void

 

780쪽 밑에서 3~4번째 줄에서(옮긴이 지적: 'libgit2'는 코드서체, 'git2/errors.h'에는 파일명 서체 적용하기)

예를 들어 libgit2의 git2/errors.h 헤더 파일에는

예를 들어 libgit2의 git2/errors.h 헤더 파일에는

 

785쪽 밑에서 8번째 줄에서(옮긴이 지적)

는 CStr을 만든다.  는 CStr 만든다.

 

792쪽 밑에서 1~2번째 줄에서(옮긴이 지적: '의 crates.io 페이지' 강조하지 않기)

bindgen crates.io 페이지에  bindgen의 crates.io 페이지에

 

805쪽 밑에서 2번째 줄에서(옮긴이 지적)

는 Ok를 받던지 Err를 받던지 둘 중 하나다.

는 Ok를 받지 Err지 둘 중 하나다.

 

807쪽 밑에서 4~5번째 줄에서(옮긴이 지적: "‘text를"이라고 2번 나오는데, 따옴표에도 코드서체가 적용되어야 함)

‘text를 가진 &str를 포함하고 있는 것처럼 행동한다. 마찬가지로 Commit::author는 자신이 반환하는 Signature의 수명 ‘text를

 

text를 가진 &str를 포함하고 있는 것처럼 행동한다. 마찬가지로 Commit::author는 자신이 반환하는 Signature의 수명 text

 

812~828쪽 찾아보기에서 모두 수정(옮긴이 지적)

애트리뷰트 트리뷰트