From af786a9b1116ce011b63dff6f22e3adc847e0c3f Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" 기본적으로 러스트는 모든 프로그램의 스코프로 가져오는 표준 라이브러리에
정의된 아이템 집합을 가지고 있습니다. 이 집합을 프렐루드 (prelude) 라고
-부르며, 이와 관련한 것은 표준 라이브러리 문서에서 찾아볼 수 있습니다.유니온 정의하기; 유니온 선언에서만
+
union
- 유니온 정의하기; 유니온 선언에서만
키워드로 사용됩니다unsafe
- 안전하지 않은 코드, 함수, 트레이트, 또는 구현을 나타내기use
- 심볼을 스코프 안으로 가져오기}
만약 여러분이 원하는 타입이 프렐루드에 없다면
use
문을 활용하여 명시적으로 그 타입을 가져와야 합니다.
std::io
는 사용자의 입력을 받는 것을 포함하여 io
와 관련된
@@ -361,7 +361,7 @@
String
은 표준 라이브러리에서
+String
은 표준 라이브러리에서
제공하는 확장 가능한 (growable) UTF-8 인코딩의 문자열 타입입니다.
::new
에 있는 ::
는 new
가 String
타입의 연관 함수 (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 guess
를 read_line
의
인수로 전달하여 사용자 입력이 어떤 문자열에 저장될
것인지 알려줍니다. read_line
의 전체 기능은 사용자가 표준 입력 장치에
@@ -441,7 +441,7 @@
Result
는 enum이라고도 일컫는
+Result
는 enum이라고도 일컫는
열거형 (enumeration)인데, 여러 개의 가능한 상태 중
하나의 값이 될 수 있는 타입입니다. 이러한 가능한 상태 값을 배리언트 (variant) 라고 부릅니다.
6장에서 열거형에 대해 더 자세히 다루겠습니다. @@ -451,7 +451,7 @@
expect
메서드가
+Result
인스턴스에는 expect
메서드가
있습니다. 만약 Result
인스턴스가 Err
일 경우 expect
메서드는 프로그램의 작동을 멈추고 expect
에 인수로 넘겼던
메시지를 출력하도록 합니다. 만약 read_line
메서드가 Err
를
@@ -925,7 +925,7 @@ \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 @@
상수는 선언된 스코프 내에서 프로그램이 동작하는 전체 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
은 닫힌
중괄호 }
가 나타나는 지점에서 자동으로 호출됩니다.
프로그램을 디버깅하는 동안 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:
+‘러스토노미콘 (The Rustonomicon)’을 보세요:Vec<T>
타입의 구현 세부 사항에 대한 그 밖의 것에 대해서는 -‘러스토노미콘 (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
값을 반환하는 클로저 입니다. (이때T
는Option<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 @@Send
Sync
하지 않은 구성 요소들로 구성된 새로운 동시적 타입을 만드는 것이 안전성 보장을 유지하기 위해 신중한 고려가 필요하다는 -점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 +점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 정보가 있습니다.정리
지금 부분이 이 책에서 동시성에 대해 보게 될 마지막은 아닙니다: 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
에 있는 ::
는 new
가 String
타입의 연관 함수 (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 guess
를 read_line
의
인수로 전달하여 사용자 입력이 어떤 문자열에 저장될
것인지 알려줍니다. read_line
의 전체 기능은 사용자가 표준 입력 장치에
@@ -1093,7 +1093,7 @@
Result
는 enum이라고도 일컫는
+Result
는 enum이라고도 일컫는
열거형 (enumeration)인데, 여러 개의 가능한 상태 중
하나의 값이 될 수 있는 타입입니다. 이러한 가능한 상태 값을 배리언트 (variant) 라고 부릅니다.
6장에서 열거형에 대해 더 자세히 다루겠습니다. @@ -1103,7 +1103,7 @@
expect
메서드가
+Result
인스턴스에는 expect
메서드가
있습니다. 만약 Result
인스턴스가 Err
일 경우 expect
메서드는 프로그램의 작동을 멈추고 expect
에 인수로 넘겼던
메시지를 출력하도록 합니다. 만약 read_line
메서드가 Err
를
@@ -1577,7 +1577,7 @@ \r\n
을 발생시킵니다.) trim
메서드는 \n
혹은 \r\n
을
제거하고 5
만 남도록 처리합니다.
-문자열의 parse
메서드는 문자열을 다른 타입으로
+
문자열의 parse
메서드는 문자열을 다른 타입으로
바꿔줍니다. 여기서는 문자열을 숫자로 바꾸는 데 사용합니다. let guess: u32
를
사용하여 필요로 하는 정확한 숫자 타입을 러스트에 알려줄 필요가 있습니다.
guess
뒤의 콜론(:
)은 변수의 타입을 명시했음을 의미합니다.
@@ -2022,7 +2022,7 @@
상수는 선언된 스코프 내에서 프로그램이 동작하는 전체 @@ -3423,7 +3423,7 @@
보시면 String
에서 사용한 메모리를 자연스럽게 해제하는 지점이 있습니다.
s
가 스코프 밖으로 벗어날 때인데, 러스트는 변수가 스코프 밖으로 벗어나면
-drop
이라는 특별한 함수를 호출합니다. 이 함수는
+drop
이라는 특별한 함수를 호출합니다. 이 함수는
해당 타입을 개발한 개발자가 직접 메모리 해제 코드를 작성해 넣을 수 있게 되어있으며,
위의 경우 String
개발자가 작성한 메모리 해제 코드가 실행되겠죠. drop
은 닫힌
중괄호 }
가 나타나는 지점에서 자동으로 호출됩니다.
프로그램을 디버깅하는 동안 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:
+‘러스토노미콘 (The Rustonomicon)’을 보세요:Vec<T>
타입의 구현 세부 사항에 대한 그 밖의 것에 대해서는 -‘러스토노미콘 (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
값을 반환하는 클로저 입니다. (이때T
는Option<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 @@Send
Sync
하지 않은 구성 요소들로 구성된 새로운 동시적 타입을 만드는 것이 안전성 보장을 유지하기 위해 신중한 고려가 필요하다는 -점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 +점입니다. ‘러스토노미콘’에 이러한 보장과 유지하는 방법에 대한 더 많은 정보가 있습니다.정리
지금 부분이 이 책에서 동시성에 대해 보게 될 마지막은 아닙니다: 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
- 심볼을 스코프 안으로 가져오기