From af786a9b1116ce011b63dff6f22e3adc847e0c3f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 28 Mar 2024 06:42:31 +0000 Subject: [PATCH] =?UTF-8?q?Auto=20Deploy=20(fix:=20=EB=8F=99=EC=9E=91?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#59))=20bf4d8b90943b2e10d129d257465fe60a6?= =?UTF-8?q?ffc3d95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- appendix-01-keywords.html | 2 +- ch02-00-guessing-game-tutorial.html | 14 ++--- ch03-01-variables-and-mutability.html | 2 +- ch04-01-what-is-ownership.html | 2 +- ch05-02-example-structs.html | 6 +- ch06-01-defining-an-enum.html | 6 +- ch08-01-vectors.html | 4 +- ch09-02-recoverable-errors-with-result.html | 2 +- ch10-03-lifetime-syntax.html | 2 +- ch11-01-writing-tests.html | 2 +- ch13-01-closures.html | 2 +- ch15-06-reference-cycles.html | 2 +- ch16-03-shared-state.html | 4 +- ...-extensible-concurrency-sync-and-send.html | 2 +- ch19-01-unsafe-rust.html | 2 +- ch19-06-macros.html | 2 +- ch20-02-multithreaded.html | 4 +- print.html | 60 +++++++++---------- 18 files changed, 60 insertions(+), 60 deletions(-) diff --git a/appendix-01-keywords.html b/appendix-01-keywords.html index f3595e789a..6880cba8c5 100644 --- a/appendix-01-keywords.html +++ b/appendix-01-keywords.html @@ -225,7 +225,7 @@

유니온 정의하기; 유니온 선언에서만 +
  • union - 유니온 정의하기; 유니온 선언에서만 키워드로 사용됩니다
  • unsafe - 안전하지 않은 코드, 함수, 트레이트, 또는 구현을 나타내기
  • use - 심볼을 스코프 안으로 가져오기
  • diff --git a/ch02-00-guessing-game-tutorial.html b/ch02-00-guessing-game-tutorial.html index 25015709ba..66e95c7b3c 100644 --- a/ch02-00-guessing-game-tutorial.html +++ b/ch02-00-guessing-game-tutorial.html @@ -280,7 +280,7 @@

    }

    기본적으로 러스트는 모든 프로그램의 스코프로 가져오는 표준 라이브러리에 정의된 아이템 집합을 가지고 있습니다. 이 집합을 프렐루드 (prelude) 라고 -부르며, 이와 관련한 것은 표준 라이브러리 문서에서 찾아볼 수 있습니다.

    +부르며, 이와 관련한 것은 표준 라이브러리 문서에서 찾아볼 수 있습니다.

    만약 여러분이 원하는 타입이 프렐루드에 없다면 use문을 활용하여 명시적으로 그 타입을 가져와야 합니다. std::io는 사용자의 입력을 받는 것을 포함하여 io와 관련된 @@ -361,7 +361,7 @@

    String은 표준 라이브러리에서 +String은 표준 라이브러리에서 제공하는 확장 가능한 (growable) UTF-8 인코딩의 문자열 타입입니다.

    ::new에 있는 ::newString 타입의 연관 함수 (associated function) 임을 나타냅니다. 연관 함수란 어떤 타입에 구현된 함수고, 위의 경우에는 @@ -393,10 +393,10 @@

    프로그램 시작 지점에서 use std::io를 통해 io 라이브러리를 가져오지 않았더라도, 함수 호출 시 std::io::stdin처럼 작성하는 것으로 이 함수를 이용할 수 있습니다. stdin 함수는 터미널의 표준 입력의 핸들 (handle) 을 -나타내는 타입인 std::io::Stdin의 인스턴스를 +나타내는 타입인 std::io::Stdin의 인스턴스를 돌려줍니다.

    코드의 다음 부분인 .read_line(&mut guess)는 사용자로부터 -입력받기 위해 표준 입력 핸들에서 read_line +입력받기 위해 표준 입력 핸들에서 read_line 메서드를 호출합니다. 여기에 &mut guessread_line의 인수로 전달하여 사용자 입력이 어떤 문자열에 저장될 것인지 알려줍니다. read_line의 전체 기능은 사용자가 표준 입력 장치에 @@ -441,7 +441,7 @@

    Resultenum이라고도 일컫는 +Resultenum이라고도 일컫는 열거형 (enumeration)인데, 여러 개의 가능한 상태 중 하나의 값이 될 수 있는 타입입니다. 이러한 가능한 상태 값을 배리언트 (variant) 라고 부릅니다.

    6장에서 열거형에 대해 더 자세히 다루겠습니다. @@ -451,7 +451,7 @@

    expect 메서드가 +Result 인스턴스에는 expect 메서드가 있습니다. 만약 Result 인스턴스가 Err일 경우 expect 메서드는 프로그램의 작동을 멈추고 expect에 인수로 넘겼던 메시지를 출력하도록 합니다. 만약 read_line 메서드가 Err를 @@ -925,7 +925,7 @@

    enter는 캐리지 리턴과 개행문자, 즉 \r\n을 발생시킵니다.) trim 메서드는 \n 혹은 \r\n을 제거하고 5만 남도록 처리합니다.

    -

    문자열의 parse 메서드는 문자열을 다른 타입으로 +

    문자열의 parse 메서드는 문자열을 다른 타입으로 바꿔줍니다. 여기서는 문자열을 숫자로 바꾸는 데 사용합니다. let guess: u32를 사용하여 필요로 하는 정확한 숫자 타입을 러스트에 알려줄 필요가 있습니다. guess 뒤의 콜론(:)은 변수의 타입을 명시했음을 의미합니다. diff --git a/ch03-01-variables-and-mutability.html b/ch03-01-variables-and-mutability.html index 8271bc485c..eb719d000c 100644 --- a/ch03-01-variables-and-mutability.html +++ b/ch03-01-variables-and-mutability.html @@ -284,7 +284,7 @@

    상수

    모든 글자를 대문자로 쓰는 것입니다. 컴파일러는 컴파일 타임에 제한된 연산을 수행할 수 있는데, 이런 상숫값을 10,800으로 쓰는 대신 이해하고 검사하기 더 쉽게 작성할 방법을 제공해 줍니다. -상숫값 평가에 대한 러스트 참고 자료 절에서 상수 선언에 +상숫값 평가에 대한 러스트 참고 자료 절에서 상수 선언에 사용될 수 있는 연산이 어떤 것이 있는지 더 많은 정보를 찾을 수 있습니다.

    상수는 선언된 스코프 내에서 프로그램이 동작하는 전체 diff --git a/ch04-01-what-is-ownership.html b/ch04-01-what-is-ownership.html index 1de782b6d3..9c9ba1217c 100644 --- a/ch04-01-what-is-ownership.html +++ b/ch04-01-what-is-ownership.html @@ -377,7 +377,7 @@

    }

    보시면 String에서 사용한 메모리를 자연스럽게 해제하는 지점이 있습니다. s가 스코프 밖으로 벗어날 때인데, 러스트는 변수가 스코프 밖으로 벗어나면 -drop이라는 특별한 함수를 호출합니다. 이 함수는 +drop이라는 특별한 함수를 호출합니다. 이 함수는 해당 타입을 개발한 개발자가 직접 메모리 해제 코드를 작성해 넣을 수 있게 되어있으며, 위의 경우 String 개발자가 작성한 메모리 해제 코드가 실행되겠죠. drop은 닫힌 중괄호 }가 나타나는 지점에서 자동으로 호출됩니다.

    diff --git a/ch05-02-example-structs.html b/ch05-02-example-structs.html index 2bdfe71201..a56a0f558a 100644 --- a/ch05-02-example-structs.html +++ b/ch05-02-example-structs.html @@ -306,7 +306,7 @@

    <

    트레이트 파생으로 유용한 기능 추가하기

    프로그램을 디버깅하는 동안 Rectangle 인스턴스 내 모든 필드 값을 출력해서 확인할 수 있다면 좋을 것 같군요. 예제 5-11은 앞서 다뤄본 -println! 매크로를 사용해 본 예시이나, +println! 매크로를 사용해 본 예시이나, 작동하진 않습니다.

    파일명: src/main.rs

    struct Rectangle {
    @@ -397,7 +397,7 @@ 

    dbg! 매크로를 사용하는 것인데, +dbg! 매크로를 사용하는 것인데, 이는 표현식의 소유권을 가져와서, (참조자를 사용하는 println!과는 다릅니다) 코드에서 dbg! 매크로를 호출한 파일 및 라인 번호를 결괏값과 함께 출력하고 다시 소유권을 반환합니다.

    @@ -453,7 +453,7 @@

    러스트 참고 자료의 ‘속성 (attributes)’절을 살펴보세요.

    +러스트 참고 자료의 ‘속성 (attributes)’절을 살펴보세요.

    만들어진 area 함수는 사각형의 면적만을 계산합니다. Rectangle 구조체를 제외한 다른 타입으로는 작동하지 않으니 Rectangle 구조체와 더 밀접하게 묶는 편이 더 유용할 겁니다. diff --git a/ch06-01-defining-an-enum.html b/ch06-01-defining-an-enum.html index 1832224967..31b9f59b91 100644 --- a/ch06-01-defining-an-enum.html +++ b/ch06-01-defining-an-enum.html @@ -339,7 +339,7 @@

    열거형 값

    두 가지 다른 종류의 IP 주소를 저장하기 위해 코드에 열거형을 정의하는 몇 가지 방법을 살펴봤습니다. 그러나, 누구나 알듯이 IP 주소와 그 종류를 저장하는 것은 흔하기 때문에, -표준 라이브러리에 정의된 것을 사용할 수 있습니다! +표준 라이브러리에 정의된 것을 사용할 수 있습니다! 표준 라이브러리에서 IpAddr를 어떻게 정의하고 있는지 살펴봅시다. 위에서 정의하고 사용했던 것과 동일한 열거형과 배리언트를 갖고 있지만, 배리언트에 포함된 주소 데이터는 두 가지 다른 구조체로 되어 있으며, @@ -465,7 +465,7 @@

    Option<T>이며, 다음과 같이 -표준 라이브러리에 정의되어 있습니다:

    +표준 라이브러리에 정의되어 있습니다:

    #![allow(unused)]
     fn main() {
     enum Option<T> {
    @@ -553,7 +553,7 @@ 

    그래서, Option<T> 타입인 값을 사용할 때 Some 배리언트에서 T 값을 가져오려면 어떻게 해야 하냐고요? Option<T> 열거형이 가진 메서드는 많고, 저마다 다양한 상황에서 유용하게 쓰일 수 있습니다. -그러니 한번 문서에서 여러분에게 필요한 메서드를 +그러니 한번 문서에서 여러분에게 필요한 메서드를 찾아보세요. Option<T>의 여러 메서드를 익혀두면 앞으로의 러스트 프로그래밍에 매우 많은 도움이 될 겁니다.

    일반적으로, Option<T> 값을 사용하기 위해서는 diff --git a/ch08-01-vectors.html b/ch08-01-vectors.html index 142d317530..75e7e9fb5a 100644 --- a/ch08-01-vectors.html +++ b/ch08-01-vectors.html @@ -332,7 +332,7 @@

    벡 막아둔 것이죠.

    Note: Vec<T> 타입의 구현 세부 사항에 대한 그 밖의 것에 대해서는 -‘러스토노미콘 (The Rustonomicon)’을 보세요:

    +‘러스토노미콘 (The Rustonomicon)’을 보세요:

    벡터 값에 대해 반복하기

    벡터 내의 각 요소를 차례대로 접근하기 위해서는 인덱스를 사용하여 @@ -408,7 +408,7 @@

    지금까지 벡터를 이용하는 가장 일반적인 방식 몇 가지를 논의했는데, 표준 라이브러리의 Vec에 정의된 유용한 메서드들이 많이 있으니 -API 문서를 꼭 살펴봐 주시기 바랍니다. 예를 들면, +API 문서를 꼭 살펴봐 주시기 바랍니다. 예를 들면, push에 더해서, pop 메서드는 제일 마지막 요소를 반환하고 지워줍니다.

    벡터가 버려지면 벡터의 요소도 버려집니다

    struct와 마찬가지로, 예제 8-10에 주석으로 표시된 것처럼 diff --git a/ch09-02-recoverable-errors-with-result.html b/ch09-02-recoverable-errors-with-result.html index 6fca3d47ec..665788f9d8 100644 --- a/ch09-02-recoverable-errors-with-result.html +++ b/ch09-02-recoverable-errors-with-result.html @@ -702,7 +702,7 @@

    std::process::Termination 트레이트를 +

    main 함수가 std::process::Termination 트레이트를 구현한 타입을 반환할 수도 있는데, 이는 ExitCode를 반환하는 report라는 함수를 가지고 있습니다. 여러분이 만든 타입에 대해 Termination 트레이트를 구현하려면 표준 라이브러리 문서에서 더 많은 diff --git a/ch10-03-lifetime-syntax.html b/ch10-03-lifetime-syntax.html index 36aa2f68e6..9ba61bfb19 100644 --- a/ch10-03-lifetime-syntax.html +++ b/ch10-03-lifetime-syntax.html @@ -883,7 +883,7 @@

    정리

    이번 장에서 다룬 주제들에서 더 배울 내용이 남았다고 하면 믿어지시나요? 17장에서는 트레이트를 사용하는 또 다른 방법인 트레이트 객체 (trait object) 를 다룰 예정입니다. 매우 고급 시나리오 상에서만 필요하게 될, 라이프타임 명시에 관한 더 복잡한 시나리오도 -있습니다. 이와 관련해서는 러스트 참고 자료 문서를 읽으셔야 합니다. +있습니다. 이와 관련해서는 러스트 참고 자료 문서를 읽으셔야 합니다. 하지만 일단 다음 장에서는 러스트에서 여러분의 코드가 원하는 대로 작동함을 보장할 수 있도록 해주는 코드 테스트 작성 방법을 배워보도록 하죠.

    diff --git a/ch11-01-writing-tests.html b/ch11-01-writing-tests.html index dbff3f8fa1..ae23ed026f 100644 --- a/ch11-01-writing-tests.html +++ b/ch11-01-writing-tests.html @@ -279,7 +279,7 @@

    벤치마크 테스트 문서를 참고해 주세요.

    +자세한 내용은 벤치마크 테스트 문서를 참고해 주세요.

    테스트 출력 결과 중 Doc-tests adder로 시작하는 부분은 문서 테스트 결과를 나타냅니다. 아직 문서 테스트를 작성해 보진 않았지만, 러스트는 API 문서에 작성해 놓은 예제 코드도 컴파일 할 수 있습니다. 러스트의 이 기능은 작성한 코드와 문서의 diff --git a/ch13-01-closures.html b/ch13-01-closures.html index 02208fb601..1fbb6561f7 100644 --- a/ch13-01-closures.html +++ b/ch13-01-closures.html @@ -270,7 +270,7 @@

    Option<T>unwrap_or_else 메서드 Option<T>는 +Option<T>unwrap_or_else 메서드 Option<T>는 표준 라이브러리에 정의되어 있습니다. 이것은 하나의 인수를 받습니다: 바로 아무런 인수도 없고 T 값을 반환하는 클로저 입니다. (이때 TOption<T>Some 배리언트에 저장되는 타입과 동일하며, 지금의 경우 ShirtColor입니다.) 만일 diff --git a/ch15-06-reference-cycles.html b/ch15-06-reference-cycles.html index 21ede935aa..2d63b40b93 100644 --- a/ch15-06-reference-cycles.html +++ b/ch15-06-reference-cycles.html @@ -622,7 +622,7 @@

    정리

    기능을 활성화해 줍니다. 메모리 누수를 발생시킬 수 있는 순환 참조와, Weak<T>을 이용하여 이를 방지하는 방법도 탐구하였습니다.

    이번 장이 여러분의 흥미를 자극하여 직접 여러분만의 스마트 포인터를 -구현하고 싶어졌다면, ‘러스토노미콘’에서 더 유용한 정보를 +구현하고 싶어졌다면, ‘러스토노미콘’에서 더 유용한 정보를 확인하세요.

    다음에는 러스트의 동시성에 대해 이야기해 보겠습니다. 심지어 몇 가지 새로운 스마트 포인터에 대해서도 배우게 될 것입니다.

    diff --git a/ch16-03-shared-state.html b/ch16-03-shared-state.html index 7299700acd..bdeb87ab33 100644 --- a/ch16-03-shared-state.html +++ b/ch16-03-shared-state.html @@ -404,7 +404,7 @@

    std::sync::atomic에 대한 표준 +알고 싶으면 std::sync::atomic에 대한 표준 라이브러리 문서를 보세요. 이 시점에서는 아토믹이 기초 타입처럼 동작하지만 스레드를 교차하며 공유해도 안전하다는 것만 알면 됩니다.

    그렇다면 여러분은 왜 모든 기초 타입이 아토믹하지 않은지, 그리고 표준 라이브러리 @@ -455,7 +455,7 @@

    표준 라이브러리의 std::sync::atomic 모듈이 제공하는 +표준 라이브러리의 std::sync::atomic 모듈이 제공하는 Mutex<T> 타입보다 단순한 타입이 있습니다. 이 타입은 기초 타입에 대한 안전하고, 동시적이며, 원자적인 접근을 제공합니다. 이 예제에서는 기초 타입에 대해 Mutex<T>를 사용하여 Mutex<T>가 동작하는 방식에 집중하였습니다.

    diff --git a/ch16-04-extensible-concurrency-sync-and-send.html b/ch16-04-extensible-concurrency-sync-and-send.html index de867bcd11..9857814b10 100644 --- a/ch16-04-extensible-concurrency-sync-and-send.html +++ b/ch16-04-extensible-concurrency-sync-and-send.html @@ -225,7 +225,7 @@

    SendSync하지 않은 구성 요소들로 구성된 새로운 동시적 타입을 만드는 것이 안전성 보장을 유지하기 위해 신중한 고려가 필요하다는 -점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 +점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 정보가 있습니다.

    정리

    지금 부분이 이 책에서 동시성에 대해 보게 될 마지막은 아닙니다: 20장의 프로젝트에서는 diff --git a/ch19-01-unsafe-rust.html b/ch19-01-unsafe-rust.html index dc95600f50..4d652dd9d7 100644 --- a/ch19-01-unsafe-rust.html +++ b/ch19-01-unsafe-rust.html @@ -638,7 +638,7 @@

    러스트 참고 자료 문서에서 확인할 수 있습니다.

    +자세한 내용은 러스트 참고 자료 문서에서 확인할 수 있습니다.

    unsafe 코드를 사용하는 경우

    unsafe을 사용하여 방금 설명한 다섯 가지 동작 (슈퍼파워) 중 하나를 수행하는 것은 잘못된 것도 아니고, 심지어 눈살을 찌푸릴 일도 아닙니다. 하지만 컴파일러가 메모리 안전성을 diff --git a/ch19-06-macros.html b/ch19-06-macros.html index 9230e58bc0..4e30fb6ea5 100644 --- a/ch19-06-macros.html +++ b/ch19-06-macros.html @@ -279,7 +279,7 @@

    러스트 참고 자료 문서를 참조하세요.

    +러스트 참고 자료 문서를 참조하세요.

    먼저 괄호 한 쌍을 사용하여 전체 패턴을 둘러쌉니다. 달러 기호($)를 사용하여 패턴에 매칭될 러스트 코드를 담는 매크로 시스템 내의 변수를 선언합니다. 달러 기호는 이 변수가 일반적인 러스트 변수가 아닌 매크로 diff --git a/ch20-02-multithreaded.html b/ch20-02-multithreaded.html index 2a3cbb791f..7382d574a3 100644 --- a/ch20-02-multithreaded.html +++ b/ch20-02-multithreaded.html @@ -812,8 +812,8 @@

    std::thread::Builder와 여기서 제공하는 -spawn 메서드를 사용하고 싶을 수도 있겠습니다.

    +std::thread::Builder와 여기서 제공하는 +spawn 메서드를 사용하고 싶을 수도 있겠습니다.

    이 코드는 컴파일되고 우리가 ThreadPool::new에 인수로 지정한 개수만큼 Worker 인스턴스를 저장합니다. 하지만 execute에서 얻은 클로저는 여전히 diff --git a/print.html b/print.html index 326d66831d..abc5406050 100644 --- a/print.html +++ b/print.html @@ -932,7 +932,7 @@

    }

    기본적으로 러스트는 모든 프로그램의 스코프로 가져오는 표준 라이브러리에 정의된 아이템 집합을 가지고 있습니다. 이 집합을 프렐루드 (prelude) 라고 -부르며, 이와 관련한 것은 표준 라이브러리 문서에서 찾아볼 수 있습니다.

    +부르며, 이와 관련한 것은 표준 라이브러리 문서에서 찾아볼 수 있습니다.

    만약 여러분이 원하는 타입이 프렐루드에 없다면 use문을 활용하여 명시적으로 그 타입을 가져와야 합니다. std::io는 사용자의 입력을 받는 것을 포함하여 io와 관련된 @@ -1013,7 +1013,7 @@

    String은 표준 라이브러리에서 +String은 표준 라이브러리에서 제공하는 확장 가능한 (growable) UTF-8 인코딩의 문자열 타입입니다.

    ::new에 있는 ::newString 타입의 연관 함수 (associated function) 임을 나타냅니다. 연관 함수란 어떤 타입에 구현된 함수고, 위의 경우에는 @@ -1045,10 +1045,10 @@

    프로그램 시작 지점에서 use std::io를 통해 io 라이브러리를 가져오지 않았더라도, 함수 호출 시 std::io::stdin처럼 작성하는 것으로 이 함수를 이용할 수 있습니다. stdin 함수는 터미널의 표준 입력의 핸들 (handle) 을 -나타내는 타입인 std::io::Stdin의 인스턴스를 +나타내는 타입인 std::io::Stdin의 인스턴스를 돌려줍니다.

    코드의 다음 부분인 .read_line(&mut guess)는 사용자로부터 -입력받기 위해 표준 입력 핸들에서 read_line +입력받기 위해 표준 입력 핸들에서 read_line 메서드를 호출합니다. 여기에 &mut guessread_line의 인수로 전달하여 사용자 입력이 어떤 문자열에 저장될 것인지 알려줍니다. read_line의 전체 기능은 사용자가 표준 입력 장치에 @@ -1093,7 +1093,7 @@

    Resultenum이라고도 일컫는 +Resultenum이라고도 일컫는 열거형 (enumeration)인데, 여러 개의 가능한 상태 중 하나의 값이 될 수 있는 타입입니다. 이러한 가능한 상태 값을 배리언트 (variant) 라고 부릅니다.

    6장에서 열거형에 대해 더 자세히 다루겠습니다. @@ -1103,7 +1103,7 @@

    expect 메서드가 +Result 인스턴스에는 expect 메서드가 있습니다. 만약 Result 인스턴스가 Err일 경우 expect 메서드는 프로그램의 작동을 멈추고 expect에 인수로 넘겼던 메시지를 출력하도록 합니다. 만약 read_line 메서드가 Err를 @@ -1577,7 +1577,7 @@

    enter는 캐리지 리턴과 개행문자, 즉 \r\n을 발생시킵니다.) trim 메서드는 \n 혹은 \r\n을 제거하고 5만 남도록 처리합니다.

    -

    문자열의 parse 메서드는 문자열을 다른 타입으로 +

    문자열의 parse 메서드는 문자열을 다른 타입으로 바꿔줍니다. 여기서는 문자열을 숫자로 바꾸는 데 사용합니다. let guess: u32를 사용하여 필요로 하는 정확한 숫자 타입을 러스트에 알려줄 필요가 있습니다. guess 뒤의 콜론(:)은 변수의 타입을 명시했음을 의미합니다. @@ -2022,7 +2022,7 @@

    상수

    모든 글자를 대문자로 쓰는 것입니다. 컴파일러는 컴파일 타임에 제한된 연산을 수행할 수 있는데, 이런 상숫값을 10,800으로 쓰는 대신 이해하고 검사하기 더 쉽게 작성할 방법을 제공해 줍니다. -상숫값 평가에 대한 러스트 참고 자료 절에서 상수 선언에 +상숫값 평가에 대한 러스트 참고 자료 절에서 상수 선언에 사용될 수 있는 연산이 어떤 것이 있는지 더 많은 정보를 찾을 수 있습니다.

    상수는 선언된 스코프 내에서 프로그램이 동작하는 전체 @@ -3423,7 +3423,7 @@

    }

    보시면 String에서 사용한 메모리를 자연스럽게 해제하는 지점이 있습니다. s가 스코프 밖으로 벗어날 때인데, 러스트는 변수가 스코프 밖으로 벗어나면 -drop이라는 특별한 함수를 호출합니다. 이 함수는 +drop이라는 특별한 함수를 호출합니다. 이 함수는 해당 타입을 개발한 개발자가 직접 메모리 해제 코드를 작성해 넣을 수 있게 되어있으며, 위의 경우 String 개발자가 작성한 메모리 해제 코드가 실행되겠죠. drop은 닫힌 중괄호 }가 나타나는 지점에서 자동으로 호출됩니다.

    @@ -4928,7 +4928,7 @@

    <

    트레이트 파생으로 유용한 기능 추가하기

    프로그램을 디버깅하는 동안 Rectangle 인스턴스 내 모든 필드 값을 출력해서 확인할 수 있다면 좋을 것 같군요. 예제 5-11은 앞서 다뤄본 -println! 매크로를 사용해 본 예시이나, +println! 매크로를 사용해 본 예시이나, 작동하진 않습니다.

    파일명: src/main.rs

    struct Rectangle {
    @@ -5019,7 +5019,7 @@ 

    dbg! 매크로를 사용하는 것인데, +dbg! 매크로를 사용하는 것인데, 이는 표현식의 소유권을 가져와서, (참조자를 사용하는 println!과는 다릅니다) 코드에서 dbg! 매크로를 호출한 파일 및 라인 번호를 결괏값과 함께 출력하고 다시 소유권을 반환합니다.

    @@ -5075,7 +5075,7 @@

    러스트 참고 자료의 ‘속성 (attributes)’절을 살펴보세요.

    +러스트 참고 자료의 ‘속성 (attributes)’절을 살펴보세요.

    만들어진 area 함수는 사각형의 면적만을 계산합니다. Rectangle 구조체를 제외한 다른 타입으로는 작동하지 않으니 Rectangle 구조체와 더 밀접하게 묶는 편이 더 유용할 겁니다. @@ -5586,7 +5586,7 @@

    열거형 값

    두 가지 다른 종류의 IP 주소를 저장하기 위해 코드에 열거형을 정의하는 몇 가지 방법을 살펴봤습니다. 그러나, 누구나 알듯이 IP 주소와 그 종류를 저장하는 것은 흔하기 때문에, -표준 라이브러리에 정의된 것을 사용할 수 있습니다! +표준 라이브러리에 정의된 것을 사용할 수 있습니다! 표준 라이브러리에서 IpAddr를 어떻게 정의하고 있는지 살펴봅시다. 위에서 정의하고 사용했던 것과 동일한 열거형과 배리언트를 갖고 있지만, 배리언트에 포함된 주소 데이터는 두 가지 다른 구조체로 되어 있으며, @@ -5712,7 +5712,7 @@

    Option<T>이며, 다음과 같이 -표준 라이브러리에 정의되어 있습니다:

    +표준 라이브러리에 정의되어 있습니다:

    #![allow(unused)]
     fn main() {
     enum Option<T> {
    @@ -5800,7 +5800,7 @@ 

    그래서, Option<T> 타입인 값을 사용할 때 Some 배리언트에서 T 값을 가져오려면 어떻게 해야 하냐고요? Option<T> 열거형이 가진 메서드는 많고, 저마다 다양한 상황에서 유용하게 쓰일 수 있습니다. -그러니 한번 문서에서 여러분에게 필요한 메서드를 +그러니 한번 문서에서 여러분에게 필요한 메서드를 찾아보세요. Option<T>의 여러 메서드를 익혀두면 앞으로의 러스트 프로그래밍에 매우 많은 도움이 될 겁니다.

    일반적으로, Option<T> 값을 사용하기 위해서는 @@ -7538,7 +7538,7 @@

    벡 막아둔 것이죠.

    Note: Vec<T> 타입의 구현 세부 사항에 대한 그 밖의 것에 대해서는 -‘러스토노미콘 (The Rustonomicon)’을 보세요:

    +‘러스토노미콘 (The Rustonomicon)’을 보세요:

    벡터 값에 대해 반복하기

    벡터 내의 각 요소를 차례대로 접근하기 위해서는 인덱스를 사용하여 @@ -7614,7 +7614,7 @@

    지금까지 벡터를 이용하는 가장 일반적인 방식 몇 가지를 논의했는데, 표준 라이브러리의 Vec에 정의된 유용한 메서드들이 많이 있으니 -API 문서를 꼭 살펴봐 주시기 바랍니다. 예를 들면, +API 문서를 꼭 살펴봐 주시기 바랍니다. 예를 들면, push에 더해서, pop 메서드는 제일 마지막 요소를 반환하고 지워줍니다.

    벡터가 버려지면 벡터의 요소도 버려집니다

    struct와 마찬가지로, 예제 8-10에 주석으로 표시된 것처럼 @@ -8944,7 +8944,7 @@

    std::process::Termination 트레이트를 +

    main 함수가 std::process::Termination 트레이트를 구현한 타입을 반환할 수도 있는데, 이는 ExitCode를 반환하는 report라는 함수를 가지고 있습니다. 여러분이 만든 타입에 대해 Termination 트레이트를 구현하려면 표준 라이브러리 문서에서 더 많은 @@ -11001,7 +11001,7 @@

    정리

    이번 장에서 다룬 주제들에서 더 배울 내용이 남았다고 하면 믿어지시나요? 17장에서는 트레이트를 사용하는 또 다른 방법인 트레이트 객체 (trait object) 를 다룰 예정입니다. 매우 고급 시나리오 상에서만 필요하게 될, 라이프타임 명시에 관한 더 복잡한 시나리오도 -있습니다. 이와 관련해서는 러스트 참고 자료 문서를 읽으셔야 합니다. +있습니다. 이와 관련해서는 러스트 참고 자료 문서를 읽으셔야 합니다. 하지만 일단 다음 장에서는 러스트에서 여러분의 코드가 원하는 대로 작동함을 보장할 수 있도록 해주는 코드 테스트 작성 방법을 배워보도록 하죠.

    자동화 테스트 작성하기

    @@ -11132,7 +11132,7 @@

    벤치마크 테스트 문서를 참고해 주세요.

    +자세한 내용은 벤치마크 테스트 문서를 참고해 주세요.

    테스트 출력 결과 중 Doc-tests adder로 시작하는 부분은 문서 테스트 결과를 나타냅니다. 아직 문서 테스트를 작성해 보진 않았지만, 러스트는 API 문서에 작성해 놓은 예제 코드도 컴파일 할 수 있습니다. 러스트의 이 기능은 작성한 코드와 문서의 @@ -14947,7 +14947,7 @@

    Option<T>unwrap_or_else 메서드 Option<T>는 +Option<T>unwrap_or_else 메서드 Option<T>는 표준 라이브러리에 정의되어 있습니다. 이것은 하나의 인수를 받습니다: 바로 아무런 인수도 없고 T 값을 반환하는 클로저 입니다. (이때 TOption<T>Some 배리언트에 저장되는 타입과 동일하며, 지금의 경우 ShirtColor입니다.) 만일 @@ -19292,7 +19292,7 @@

    정리

    기능을 활성화해 줍니다. 메모리 누수를 발생시킬 수 있는 순환 참조와, Weak<T>을 이용하여 이를 방지하는 방법도 탐구하였습니다.

    이번 장이 여러분의 흥미를 자극하여 직접 여러분만의 스마트 포인터를 -구현하고 싶어졌다면, ‘러스토노미콘’에서 더 유용한 정보를 +구현하고 싶어졌다면, ‘러스토노미콘’에서 더 유용한 정보를 확인하세요.

    다음에는 러스트의 동시성에 대해 이야기해 보겠습니다. 심지어 몇 가지 새로운 스마트 포인터에 대해서도 배우게 될 것입니다.

    @@ -20202,7 +20202,7 @@

    std::sync::atomic에 대한 표준 +알고 싶으면 std::sync::atomic에 대한 표준 라이브러리 문서를 보세요. 이 시점에서는 아토믹이 기초 타입처럼 동작하지만 스레드를 교차하며 공유해도 안전하다는 것만 알면 됩니다.

    그렇다면 여러분은 왜 모든 기초 타입이 아토믹하지 않은지, 그리고 표준 라이브러리 @@ -20253,7 +20253,7 @@

    표준 라이브러리의 std::sync::atomic 모듈이 제공하는 +표준 라이브러리의 std::sync::atomic 모듈이 제공하는 Mutex<T> 타입보다 단순한 타입이 있습니다. 이 타입은 기초 타입에 대한 안전하고, 동시적이며, 원자적인 접근을 제공합니다. 이 예제에서는 기초 타입에 대해 Mutex<T>를 사용하여 Mutex<T>가 동작하는 방식에 집중하였습니다.

    @@ -20323,7 +20323,7 @@

    SendSync하지 않은 구성 요소들로 구성된 새로운 동시적 타입을 만드는 것이 안전성 보장을 유지하기 위해 신중한 고려가 필요하다는 -점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 +점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 정보가 있습니다.

    정리

    지금 부분이 이 책에서 동시성에 대해 보게 될 마지막은 아닙니다: 20장의 프로젝트에서는 @@ -23191,7 +23191,7 @@

    러스트 참고 자료 문서에서 확인할 수 있습니다.

    +자세한 내용은 러스트 참고 자료 문서에서 확인할 수 있습니다.

    unsafe 코드를 사용하는 경우

    unsafe을 사용하여 방금 설명한 다섯 가지 동작 (슈퍼파워) 중 하나를 수행하는 것은 잘못된 것도 아니고, 심지어 눈살을 찌푸릴 일도 아닙니다. 하지만 컴파일러가 메모리 안전성을 @@ -24428,7 +24428,7 @@

    러스트 참고 자료 문서를 참조하세요.

    +러스트 참고 자료 문서를 참조하세요.

    먼저 괄호 한 쌍을 사용하여 전체 패턴을 둘러쌉니다. 달러 기호($)를 사용하여 패턴에 매칭될 러스트 코드를 담는 매크로 시스템 내의 변수를 선언합니다. 달러 기호는 이 변수가 일반적인 러스트 변수가 아닌 매크로 @@ -26009,8 +26009,8 @@

    std::thread::Builder와 여기서 제공하는 -spawn 메서드를 사용하고 싶을 수도 있겠습니다.

    +std::thread::Builder와 여기서 제공하는 +spawn 메서드를 사용하고 싶을 수도 있겠습니다.

    이 코드는 컴파일되고 우리가 ThreadPool::new에 인수로 지정한 개수만큼 Worker 인스턴스를 저장합니다. 하지만 execute에서 얻은 클로저는 여전히 @@ -27510,7 +27510,7 @@

    유니온 정의하기; 유니온 선언에서만 +
  • union - 유니온 정의하기; 유니온 선언에서만 키워드로 사용됩니다
  • unsafe - 안전하지 않은 코드, 함수, 트레이트, 또는 구현을 나타내기
  • use - 심볼을 스코프 안으로 가져오기