본문 바로가기

오탈자 정보

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

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

 

이외의 오탈자 정보를 발견하시면 옮긴이(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())와

 

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

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

 

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쪽 찾아보기에서 모두 수정(옮긴이 지적)

애트리뷰트 ⇒ 어트리뷰트