1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-04-03 10:06:14 +02:00

Cosmetic refinement in Korean translation (#455)

* Add missing translation in Korean

* Cosmetic refinement of Korean translation

* typo
* spacing
* newlines
* `_text_` into `*text*` or `*text*`
* removed a few "translation note"(역주)

* Fix typo in Korean

---------

Co-authored-by: Jooyung Han <jooyung@google.com>
This commit is contained in:
Jooyung Han 2023-02-24 16:34:27 +00:00 committed by GitHub
parent 261bcfce3e
commit 98ec5c65af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

124
po/ko.po
View File

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: [한국어]Comprehensive Rust 🦀\n" "Project-Id-Version: [한국어]Comprehensive Rust 🦀\n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2023-02-23 16:38+0900\n" "PO-Revision-Date: 2023-02-25 01:10+0900\n"
"Last-Translator: keispace <keispace.kyj@google.com>\n" "Last-Translator: keispace <keispace.kyj@google.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: ko\n" "Language: ko\n"
@ -1250,7 +1250,7 @@ msgstr "이렇게 하면 [rust-analyzer][1]를 이용해서 특정 심볼이 정
#: src/cargo.md:29 #: src/cargo.md:29
msgid "Some folks also like to use the [JetBrains][4] family of IDEs, which do their own analysis but have their own tradeoffs. If you prefer them, you can install the [Rust Plugin][5]. Please take note that as of January 2023 debugging only works on the CLion version of the JetBrains IDEA suite." msgid "Some folks also like to use the [JetBrains][4] family of IDEs, which do their own analysis but have their own tradeoffs. If you prefer them, you can install the [Rust Plugin][5]. Please take note that as of January 2023 debugging only works on the CLion version of the JetBrains IDEA suite."
msgstr "어떤 사람들은 [Jetbrains][4] 제품군을 선호하기도 합니다. 이 제품들은 rust-analyzer 를 활용하지 않고 IDE 자체적으로 구분석을 합니다. 만약 이 IDE를 설치하셨다면 [Rust Plugin][5]를 설치하시기 바랍니다. 다만 2023년 1월 기준, 디버깅은 Jetbrains IDEA suite의 CLion 버전에서만 작동한다는 점에 유의하시기 바랍니다." msgstr "어떤 사람들은 [JetBrains][4] 제품군을 선호하기도 합니다. 이 제품들은 rust-analyzer 를 활용하지 않고 IDE 자체적으로 구분석을 합니다. 만약 이 IDE를 설치하셨다면 [Rust Plugin][5]를 설치하시기 바랍니다. 다만 2023년 1월 기준, 디버깅은 JetBrains IDEA suite의 CLion 버전에서만 작동한다는 점에 유의하시기 바랍니다."
#: src/cargo.md:31 #: src/cargo.md:31
msgid "" msgid ""
@ -1438,7 +1438,7 @@ msgstr ""
msgid "" msgid ""
"You can use <kbd>Ctrl + Enter</kbd> to execute the code when focus is in the\n" "You can use <kbd>Ctrl + Enter</kbd> to execute the code when focus is in the\n"
"text box." "text box."
msgstr "코드 블록에 포커스를 두고 <kbd>Ctrl-Enter</kbd>를 눌러 실행해 볼 수 있습니다." msgstr "코드 블록에 포커스를 두고 <kbd>Ctrl + Enter</kbd>를 눌러 실행해 볼 수 있습니다."
#: src/cargo/code-samples.md:24 #: src/cargo/code-samples.md:24
msgid "" msgid ""
@ -1676,7 +1676,7 @@ msgid ""
" * servers." " * servers."
msgstr "" msgstr ""
"* 러스트는 C++와 유사한 정적 컴파일 언어입니다.\n" "* 러스트는 C++와 유사한 정적 컴파일 언어입니다.\n"
" * 'rustc'는 LLVM을 백엔드로 사용합니다.\n" " * `rustc`는 LLVM을 백엔드로 사용합니다.\n"
"* 러스트는 다양한 플랫폼과 아키텍쳐를 지원합니다.\n" "* 러스트는 다양한 플랫폼과 아키텍쳐를 지원합니다.\n"
" * x86, ARM, WebAssembly, ...\n" " * x86, ARM, WebAssembly, ...\n"
" * Linux, Mac, Windows, ...\n" " * Linux, Mac, Windows, ...\n"
@ -1685,7 +1685,7 @@ msgstr ""
" * 스마트 디스플레이\n" " * 스마트 디스플레이\n"
" * 스마트폰\n" " * 스마트폰\n"
" * 데스크탑\n" " * 데스크탑\n"
" * 서버." " * 서버"
#: src/welcome-day-1/what-is-rust.md:21 #: src/welcome-day-1/what-is-rust.md:21
msgid "Rust fits in the same area as C++:" msgid "Rust fits in the same area as C++:"
@ -1816,13 +1816,13 @@ msgid ""
"The code implements the Collatz conjecture: it is believed that the loop will\n" "The code implements the Collatz conjecture: it is believed that the loop will\n"
"always end, but this is not yet proved. Edit the code and play with different\n" "always end, but this is not yet proved. Edit the code and play with different\n"
"inputs." "inputs."
msgstr "이 코드는 콜라츠 추측(Collatz conjecture)으로 구현됩니다:반복문이 언제나 종료될 것이라고 믿지만 증명된 것은 아닙니다. 코드를 수정하고 실행해 보시기 바랍니다." msgstr "이 코드는 콜라츠 추측(Collatz conjecture)으로 구현됩니다: 반복문이 언제나 종료될 것이라고 믿지만 증명된 것은 아닙니다. 코드를 수정하고 실행해 보시기 바랍니다."
#: src/hello-world/small-example.md:29 #: src/hello-world/small-example.md:29
msgid "" msgid ""
"* Explain that all variables are statically typed. Try removing `i32` to trigger\n" "* Explain that all variables are statically typed. Try removing `i32` to trigger\n"
" type inference. Try with `i8` instead and trigger a runtime integer overflow." " type inference. Try with `i8` instead and trigger a runtime integer overflow."
msgstr "* 모든 변수가 컴파일 시 정해진 타입을 가짐을 설명합니다. i32를 삭제하여 컴파일러가 타입 추론을 하도록 해 봅니다. i32을 i8로 변경하여 런타임 오버플로를 유발해 볼 수 있습니다." msgstr "* 모든 변수가 컴파일 시 정해진 타입을 가짐을 설명합니다. `i32`를 삭제하여 컴파일러가 타입 추론을 하도록 해 봅니다. `i32``i8`로 변경하여 런타임 오버플로를 유발해 볼 수 있습니다."
#: src/hello-world/small-example.md:32 #: src/hello-world/small-example.md:32
msgid "* Change `let mut x` to `let x`, discuss the compiler error." msgid "* Change `let mut x` to `let x`, discuss the compiler error."
@ -1845,7 +1845,7 @@ msgid ""
"* Show the students the standard library, show them how to search for `std::fmt`\n" "* Show the students the standard library, show them how to search for `std::fmt`\n"
" which has the rules of the formatting mini-language. It's important that the\n" " which has the rules of the formatting mini-language. It's important that the\n"
" students become familiar with searching in the standard library." " students become familiar with searching in the standard library."
msgstr "학생들에게 표준 라이브러리가 어디 있는지 알려 주고는, `print!`가 지원하는 포맷팅 언어의 문법을 알기 위해 `std::fmt`를 검색해야 한다는 것을 가르치세요.학생들이 표준 라이브러리의 검색 기능에 익숙해 지도록 하는 것이 중요합니다." msgstr "* 학생들에게 표준 라이브러리가 어디 있는지 알려 주고는, `print!`가 지원하는 포맷팅 언어의 문법을 알기 위해 `std::fmt`를 검색해야 한다는 것을 가르치세요.학생들이 표준 라이브러리의 검색 기능에 익숙해 지도록 하는 것이 중요합니다."
#: src/why-rust.md:1 #: src/why-rust.md:1
msgid "# Why Rust?" msgid "# Why Rust?"
@ -1934,7 +1934,7 @@ msgid ""
msgstr "" msgstr ""
"* [`Box::leak`]을 이용하여 포인터를 의도적으로 누출시킬 수 있습니다. 이를 이용해서 런타임이 생성하고 런타임이 크기를 정한 정적 변수를 가져올 수 있습니다.\n" "* [`Box::leak`]을 이용하여 포인터를 의도적으로 누출시킬 수 있습니다. 이를 이용해서 런타임이 생성하고 런타임이 크기를 정한 정적 변수를 가져올 수 있습니다.\n"
"* [`std::mem::forget`]을 사용하여 컴파일러가 값에 대해 \"잊도록\" 만들 수 있습니다(소멸자가 실행되지 않음을 의미합니다).\n" "* [`std::mem::forget`]을 사용하여 컴파일러가 값에 대해 \"잊도록\" 만들 수 있습니다(소멸자가 실행되지 않음을 의미합니다).\n"
"* `Rc` 또는 `Arc`를 사용하여 실수로 [순환참조][reference cycle] 생성할 수도 있습니다.\n" "* `Rc` 또는 `Arc`를 사용하여 실수로 [순환참조][reference cycle] 생성할 수도 있습니다.\n"
"* 컬렉션을 무한정 채우는 것을 메모리 누출로 간주할 수도 있지만, 러스트는 이를 보호하진 못합니다." "* 컬렉션을 무한정 채우는 것을 메모리 누출로 간주할 수도 있지만, 러스트는 이를 보호하진 못합니다."
#: src/why-rust/compile-time.md:28 #: src/why-rust/compile-time.md:28
@ -2036,7 +2036,7 @@ msgid ""
"* It may be worth mentioning that Rust enums are 'Algebraic Data Types', also\n" "* It may be worth mentioning that Rust enums are 'Algebraic Data Types', also\n"
" known as 'sum types', which allow the type system to express things like\n" " known as 'sum types', which allow the type system to express things like\n"
" `Option<T>` and `Result<T, E>`." " `Option<T>` and `Result<T, E>`."
msgstr "* 러스트의 열거형(enum)은 합계 타입(`sum types`)으로 알려진 대수학적 데이터형('Algebraic Data Types')으로, 타입 시스템이 `Option<T>`와 `Result<T, E>`등을 표현할 수 있게 해줍니다." msgstr "* 러스트의 열거형(enum)은 합계 타입(sum type)으로 알려진 대수학적 데이터형(Algebraic Data Type)으로, 타입 시스템이 `Option<T>`와 `Result<T, E>`등을 표현할 수 있게 해줍니다."
#: src/why-rust/modern.md:32 #: src/why-rust/modern.md:32
msgid "" msgid ""
@ -2177,16 +2177,14 @@ msgid ""
"| Arrays | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n" "| Arrays | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n"
"| Tuples | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |" "| Tuples | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |"
msgstr "" msgstr ""
"| | Types | Literals |\n" "| | 타입 | 리터럴 |\n"
"|--------------|-------------------------------|-----------------------------------|\n" "|------|-------------------------------|-----------------------------------|\n"
"| 배열(Arrays) | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n" "| 배열 | `[T; N]` | `[20, 30, 40]`, `[0; 3]` |\n"
"| 튜플(Tuples) | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |" "| 튜플 | `()`, `(T,)`, `(T1, T2)`, ... | `()`, `('x',)`, `('x', 1.2)`, ... |"
#: src/basic-syntax/compound-types.md:8 #: src/basic-syntax/compound-types.md:8
msgid "Array assignment and access:" msgid "Array assignment and access:"
msgstr "" msgstr "배열 선언과 접근:"
"* _역주: js기준으로 설명하면 튜플은 ‘순서가 중요해서 사이즈 N으로 고정된 불변(immutable) 배열’ 이라고 보면 됨. 정확히는 서수(순서가 의미가 있는 내용)의 묶음(모음). 갯수N개에 대해서 N-tuple이라고 부르며 2-tuple을 흔히 쓰긴 함.(cf. 열거형)_\n"
"배열 선언과 접근:"
#: src/basic-syntax/compound-types.md:10 #: src/basic-syntax/compound-types.md:10
msgid "" msgid ""
@ -2239,7 +2237,7 @@ msgstr "* 포매팅 문자열에서 `?`는 디버깅 출력을 의미합니다.
#: src/basic-syntax/compound-types.md:45 #: src/basic-syntax/compound-types.md:45
msgid "* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be easier to read." msgid "* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be easier to read."
msgstr "* `#`을 추가하면(`{a:#}`) 좀 더 읽기 쉬운 \"이쁜\" 형태로 출력이 됩니다." msgstr "* `#`을 추가하면(`{a:#?}`) 좀 더 읽기 쉬운 \"이쁜\" 형태로 출력이 됩니다."
#: src/basic-syntax/compound-types.md:47 #: src/basic-syntax/compound-types.md:47
msgid "Tuples:" msgid "Tuples:"
@ -2317,7 +2315,7 @@ msgid ""
"* Be sure to note the difference between `let mut ref_x: &i32` and `let ref_x:\n" "* Be sure to note the difference between `let mut ref_x: &i32` and `let ref_x:\n"
" &mut i32`. The first one represents a mutable reference which can be bound to\n" " &mut i32`. The first one represents a mutable reference which can be bound to\n"
" different values, while the second represents a reference to a mutable value." " different values, while the second represents a reference to a mutable value."
msgstr "`let mut ref_x: &i32`와 `let ref_x: &mut i32`의 차이점에 주의 하시기 바랍니다. 첫번째 값은 다른 값에 바인딩 될 수 있는 가변 참조이고, 두번째 값은 가변 값에 대한 참조입니다." msgstr "* `let mut ref_x: &i32`와 `let ref_x: &mut i32`의 차이점에 주의 하시기 바랍니다. 첫번째 값은 다른 값에 바인딩 될 수 있는 가변 참조이고, 두번째 값은 가변 값에 대한 참조입니다."
#: src/basic-syntax/references-dangling.md:1 #: src/basic-syntax/references-dangling.md:1
msgid "# Dangling References" msgid "# Dangling References"
@ -2417,11 +2415,11 @@ msgstr ""
#: src/basic-syntax/string-slices.md:1 #: src/basic-syntax/string-slices.md:1
msgid "# `String` vs `str`" msgid "# `String` vs `str`"
msgstr "# String과 str" msgstr "# `String``str`"
#: src/basic-syntax/string-slices.md:3 #: src/basic-syntax/string-slices.md:3
msgid "We can now understand the two string types in Rust:" msgid "We can now understand the two string types in Rust:"
msgstr "이제 러스트의 두 가지 문자열 타입에 대해서 이해해 보겠습니다.:" msgstr "이제 러스트의 두 가지 문자열 타입에 대해서 이해해 보겠습니다:"
#: src/basic-syntax/string-slices.md:5 #: src/basic-syntax/string-slices.md:5
msgid "" msgid ""
@ -2460,7 +2458,7 @@ msgstr ""
msgid "" msgid ""
"* `&str` introduces a string slice, which is an immutable reference to UTF-8 encoded string data \n" "* `&str` introduces a string slice, which is an immutable reference to UTF-8 encoded string data \n"
" stored in a block of memory. String literals (`”Hello”`), are stored in the program’s binary." " stored in a block of memory. String literals (`”Hello”`), are stored in the program’s binary."
msgstr "* `&str`은 문자열 슬라이스의 불변 참조입니다. 러스트에서 문자열은 UTF-8로 인코딩된 데이터를 의미합니다. 문자열 리터럴(`”Hello”`)은 프로그램 바이너리에 저장됩니다." msgstr "* `&str`은 문자열 슬라이스의 불변 참조입니다. 러스트에서 문자열은 UTF-8로 인코딩된 데이터를 의미합니다. 문자열 리터럴(`\"Hello\"`)은 프로그램 바이너리에 저장됩니다."
#: src/basic-syntax/string-slices.md:30 #: src/basic-syntax/string-slices.md:30
msgid "" msgid ""
@ -2575,7 +2573,8 @@ msgstr ""
"* `main` 함수에서 그 다음에 오는 함수들을 사용할 수 있습니다. 상단에 선언이나 헤더 같은건 필요 없습니다.\n" "* `main` 함수에서 그 다음에 오는 함수들을 사용할 수 있습니다. 상단에 선언이나 헤더 같은건 필요 없습니다.\n"
"* 매개변수를 선언할 때에는 이름을 먼저 쓰고, 타입을 나중에 씁니다. 이름과 타입은 `:` 로 구분합니다. 이는 일부 언어(예를 들어 C)와 반대임에 유의하시기 바랍니다. 마찬가지로, 리턴 타입도 함수의 시작이 아닌 가장 뒷부분에 선언합니다.\n" "* 매개변수를 선언할 때에는 이름을 먼저 쓰고, 타입을 나중에 씁니다. 이름과 타입은 `:` 로 구분합니다. 이는 일부 언어(예를 들어 C)와 반대임에 유의하시기 바랍니다. 마찬가지로, 리턴 타입도 함수의 시작이 아닌 가장 뒷부분에 선언합니다.\n"
"* 함수 본문의 마지막 표현식은 반환 값이 됩니다. 간단히, 식 끝에 있는 `;`를 생략하면 됩니다.\n" "* 함수 본문의 마지막 표현식은 반환 값이 됩니다. 간단히, 식 끝에 있는 `;`를 생략하면 됩니다.\n"
"* 반환값이 없는 함수의 경우, `유닛 타입 ()`을 반환합니다. `-> ()`가 생략된 경우 컴파일러는 이를 추론합니다.* `fizzbuzz_to()`함수 내 `for` 반목문의 rage 표현식 중 `=n`은 해당 범위까지 포함한다는 의미입니다.\n" "* 반환값이 없는 함수의 경우, 유닛 타입 `()`을 반환합니다. `-> ()`가 생략된 경우 컴파일러는 이를 추론합니다.\n"
"* `fizzbuzz_to()`함수 내 `for` 반목문의 범위 표현식 중 `=n`은 n까지 포함한다는 의미입니다.\n"
"* `fizzbuzz()`함수의 `match` 표현식은 많은 일을 합니다. 무슨 일이 일어나는지 조금 더 이해하기 쉽도록 아래 코드를 확인하시기 바랍니다." "* `fizzbuzz()`함수의 `match` 표현식은 많은 일을 합니다. 무슨 일이 일어나는지 조금 더 이해하기 쉽도록 아래 코드를 확인하시기 바랍니다."
#: src/basic-syntax/functions.md:42 #: src/basic-syntax/functions.md:42
@ -2743,7 +2742,7 @@ msgstr "페이지 밖으로 이동할 경우 작성한 내용이 소실되기
#: src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7 #: src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7
#: src/exercises/day-3/morning.md:7 src/exercises/day-4/morning.md:12 #: src/exercises/day-3/morning.md:7 src/exercises/day-4/morning.md:12
msgid "After looking at the exercises, you can look at the [solutions] provided." msgid "After looking at the exercises, you can look at the [solutions] provided."
msgstr "연습문제를 살펴 본 후, 제공된 [solutions]을 살펴볼 수 있습니다." msgstr "연습문제를 살펴 본 후, 제공된 [해답][solutions]을 살펴볼 수 있습니다."
#: src/exercises/day-1/morning.md:24 src/exercises/day-2/morning.md:13 #: src/exercises/day-1/morning.md:24 src/exercises/day-2/morning.md:13
#: src/exercises/day-3/morning.md:9 src/exercises/day-4/morning.md:14 #: src/exercises/day-3/morning.md:9 src/exercises/day-4/morning.md:14
@ -2762,7 +2761,7 @@ msgstr "# 묵시적 형변환"
msgid "" msgid ""
"Rust will not automatically apply _implicit conversions_ between types ([unlike\n" "Rust will not automatically apply _implicit conversions_ between types ([unlike\n"
"C++][3]). You can see this in a program like this:" "C++][3]). You can see this in a program like this:"
msgstr "러스트는 [C++ 와 다르게][3] 타입 간 _묵시적 변환_을 자동으로 적용하지 않습니다. 아래 예시를 확인해 보세요:" msgstr "러스트는 [C++ 와 다르게][3] 타입 간 *묵시적 변환*을 자동으로 적용하지 않습니다. 아래 예시를 확인해 보세요:"
#: src/exercises/day-1/implicit-conversions.md:6 #: src/exercises/day-1/implicit-conversions.md:6
msgid "" msgid ""
@ -2824,7 +2823,7 @@ msgid ""
" converting small types to big types and the other way around. Check the\n" " converting small types to big types and the other way around. Check the\n"
" [standard library documentation][1] to see if `From<T>` is implemented for\n" " [standard library documentation][1] to see if `From<T>` is implemented for\n"
" the pairs you check." " the pairs you check."
msgstr "3. `x`와 `y`를 `f32'이나 'bool', 'i128' 등으로 바꿔서 해당 타입들로 변환이 되는지 확인해보세요. 작은 사이즈 타입에서 큰 사이즈로 변경해보시고 그 반대로도 해보세요. [표준 라이브러리 문서][1]에서 시도해 본 케이스가 구현되어 있는지 확인해 보세요." msgstr "3. `x`와 `y`를 `f32`이나 `bool`, `i128` 등으로 바꿔서 해당 타입들로 변환이 되는지 확인해보세요. 작은 사이즈 타입에서 큰 사이즈로 변경해보시고 그 반대로도 해보세요. [표준 라이브러리 문서][1]에서 시도해 본 케이스가 구현되어 있는지 확인해 보세요."
#: src/exercises/day-1/implicit-conversions.md:43 #: src/exercises/day-1/implicit-conversions.md:43
msgid "" msgid ""
@ -2988,7 +2987,7 @@ msgstr "상용 품질의 구현에 대해서는 [`ndarray` 크레이트](https:/
msgid "" msgid ""
"The solution and the answer to the bonus section are available in the \n" "The solution and the answer to the bonus section are available in the \n"
"[Solution](solutions-morning.md#arrays-and-for-loops) section." "[Solution](solutions-morning.md#arrays-and-for-loops) section."
msgstr "보너스 문제에 대한 답변 역시 [Solution](solutions-morning.md#arrays-and-for-loops)에서 확인할 수 있습니다." msgstr "보너스 문제에 대한 답변 역시 [해답](solutions-morning.md#arrays-and-for-loops)에서 확인할 수 있습니다."
#: src/basic-syntax/variables.md:1 #: src/basic-syntax/variables.md:1
msgid "# Variables" msgid "# Variables"
@ -3177,7 +3176,7 @@ msgstr "[Rust RFC Book][1]에서 언급한 바와 같이, 정적 변수는 별
#: src/basic-syntax/static-and-const.md:44 #: src/basic-syntax/static-and-const.md:44
msgid "We will look at mutating static data in the [chapter on Unsafe Rust](../unsafe.md)." msgid "We will look at mutating static data in the [chapter on Unsafe Rust](../unsafe.md)."
msgstr "가변 정적 데이터에 대해서는 안전하지 않은 [러스트 파트](../unsafe.md)에서 살펴봅니다." msgstr "가변 정적 데이터에 대해서는 [안전하지 않은 러스트](../unsafe.md)에서 살펴봅니다."
#: src/basic-syntax/static-and-const.md:48 #: src/basic-syntax/static-and-const.md:48
msgid "" msgid ""
@ -3195,7 +3194,7 @@ msgstr ""
#: src/basic-syntax/scopes-shadowing.md:1 #: src/basic-syntax/scopes-shadowing.md:1
msgid "# Scopes and Shadowing" msgid "# Scopes and Shadowing"
msgstr "# 범위(Scopes)와 쉐도잉(Shadowing)" msgstr "# 범위(Scope)와 쉐도잉(Shadowing)"
#: src/basic-syntax/scopes-shadowing.md:3 #: src/basic-syntax/scopes-shadowing.md:3
msgid "" msgid ""
@ -3269,8 +3268,8 @@ msgid ""
"* Full control via manual memory management: C, C++, Pascal, ...\n" "* Full control via manual memory management: C, C++, Pascal, ...\n"
"* Full safety via automatic memory management at runtime: Java, Python, Go, Haskell, ..." "* Full safety via automatic memory management at runtime: Java, Python, Go, Haskell, ..."
msgstr "" msgstr ""
"* 메모리 관리가 프로그래머의 완전한 통제하에 있지만 수동(_역주_: 그래서 안전하지 않을 수 있는)이 언어: C, C++, Pascal, ...\n" "* 메모리 관리가 프로그래머의 완전한 통제하에 있지만 수동(그래서 안전하지 않을 수 있는)인 언어: C, C++, Pascal, ...\n"
"* 메모리 관리가 런타임에 의해 되므로 안전하지만 자동(_역주_: 그래서 프로그래머가 개입할 여지가 적거나 없는)인 언어: Java, Python, Go, Haskell, ..." "* 메모리 관리가 런타임에 의해 되므로 안전하지만 자동(그래서 프로그래머가 개입할 여지가 적거나 없는)인 언어: Java, Python, Go, Haskell, ..."
#: src/memory-management.md:8 #: src/memory-management.md:8
msgid "Rust offers a new mix:" msgid "Rust offers a new mix:"
@ -3280,7 +3279,7 @@ msgstr "러스트는 이 둘을 혼합한 새로운 형태의 메모리 관리
msgid "" msgid ""
"> Full control *and* safety via compile time enforcement of correct memory\n" "> Full control *and* safety via compile time enforcement of correct memory\n"
"> management." "> management."
msgstr "> 완전한 통제와 안전." msgstr "> 컴파일 시 올바른 메모리 관리를 강제함으로써 완전한 통제와 안전성 모두 제공"
#: src/memory-management.md:13 #: src/memory-management.md:13
msgid "It does this with an explicit ownership concept." msgid "It does this with an explicit ownership concept."
@ -3445,7 +3444,7 @@ msgstr ""
msgid "" msgid ""
"Memory is leaked if the function returns early between `malloc` and `free`: the\n" "Memory is leaked if the function returns early between `malloc` and `free`: the\n"
"pointer is lost and we cannot deallocate the memory." "pointer is lost and we cannot deallocate the memory."
msgstr "만약`malloc` 과 `free` 사이에서 함수가 일찍 반환되면 메모리 누출이 일어납니다: 포인터를 잃어버리게 되어 메모리를 반환할 수 없게 됩니다." msgstr "만약 `malloc` 과 `free` 사이에서 함수가 일찍 반환되면 메모리 누출이 일어납니다: 포인터를 잃어버리게 되어 메모리를 반환할 수 없게 됩니다."
#: src/memory-management/scope-based.md:1 #: src/memory-management/scope-based.md:1
msgid "# Scope-Based Memory Management" msgid "# Scope-Based Memory Management"
@ -3519,7 +3518,7 @@ msgid ""
"* The programmer never allocates or deallocates memory explicitly.\n" "* The programmer never allocates or deallocates memory explicitly.\n"
"* A garbage collector finds unused memory and deallocates it for the programmer." "* A garbage collector finds unused memory and deallocates it for the programmer."
msgstr "" msgstr ""
"* 개발자는 메모리를 명시적으로 할당/해제 하지 않습니다. \n" "* 개발자는 메모리를 명시적으로 할당/해제 하지 않습니다.\n"
"* 가비지 컬렉터(GC)는 사용되지 않는 메모리를 찾아 해제합니다." "* 가비지 컬렉터(GC)는 사용되지 않는 메모리를 찾아 해제합니다."
#: src/memory-management/garbage-collection.md:9 #: src/memory-management/garbage-collection.md:9
@ -3561,7 +3560,7 @@ msgstr ""
#: src/memory-management/rust.md:10 #: src/memory-management/rust.md:10
msgid "It achieves this by modeling _ownership_ explicitly." msgid "It achieves this by modeling _ownership_ explicitly."
msgstr "러스트는 _소유권_을 언어 차원에서 명시적으로 모델링 함으로써 이를 이룹니다." msgstr "러스트는 *소유권*을 언어 차원에서 명시적으로 모델링 함으로써 이를 이룹니다."
#: src/memory-management/rust.md:14 #: src/memory-management/rust.md:14
msgid "* If asked how at this point, you can mention that in Rust this is usually handled by RAII wrapper types such as [Box], [Vec], [Rc], or [Arc]. These encapsulate ownership and memory allocation via various means, and prevent the potential errors in C." msgid "* If asked how at this point, you can mention that in Rust this is usually handled by RAII wrapper types such as [Box], [Vec], [Rc], or [Arc]. These encapsulate ownership and memory allocation via various means, and prevent the potential errors in C."
@ -3662,7 +3661,7 @@ msgstr "# 소유권"
msgid "" msgid ""
"All variable bindings have a _scope_ where they are valid and it is an error to\n" "All variable bindings have a _scope_ where they are valid and it is an error to\n"
"use a variable outside its scope:" "use a variable outside its scope:"
msgstr "모든 변수 바인딩은 유효한 _범위(스코프)_를 가지며, 범위 밖에서 변수 사용하면 에러가 발생합니다:" msgstr "모든 변수 바인딩은 유효한 *범위(스코프)*를 가지며, 범위 밖에서 변수 사용하면 에러가 발생합니다:"
#: src/ownership.md:6 #: src/ownership.md:6
msgid "" msgid ""
@ -3688,9 +3687,9 @@ msgid ""
"* A destructor can run here to free up resources.\n" "* A destructor can run here to free up resources.\n"
"* We say that the variable _owns_ the value." "* We say that the variable _owns_ the value."
msgstr "" msgstr ""
"* 스코프가 종료되면 변수는 _삭제(drop)_되었다고 하며 그 변수의 데이터는 메모리에서 해제됩니다.\n" "* 스코프가 종료되면 변수는 *삭제(drop)*되었다고 하며 그 변수의 데이터는 메모리에서 해제됩니다.\n"
"* 스코프가 종료될 때 다른 리소스를 해제하기 위해 소멸자가 호출되도록 할 수 있습니다.\n" "* 스코프가 종료될 때 다른 리소스를 해제하기 위해 소멸자가 호출되도록 할 수 있습니다.\n"
"* 이것을 두고 변수가 값을 _소유_한다고 표현합니다." "* 이것을 두고 변수가 값을 *소유*한다고 표현합니다."
#: src/ownership/move-semantics.md:1 #: src/ownership/move-semantics.md:1
msgid "# Move Semantics" msgid "# Move Semantics"
@ -3698,7 +3697,7 @@ msgstr "# Move 문법(Move Semantics)"
#: src/ownership/move-semantics.md:3 #: src/ownership/move-semantics.md:3
msgid "An assignment will transfer ownership between variables:" msgid "An assignment will transfer ownership between variables:"
msgstr "(변수의)할당은 소유권을 변수 간에 이동시킵니다:" msgstr "(변수의) 할당은 소유권을 변수 간에 이동시킵니다:"
#: src/ownership/move-semantics.md:5 #: src/ownership/move-semantics.md:5
msgid "" msgid ""
@ -3724,7 +3723,7 @@ msgstr ""
"* 데이터는 `s1`에서 _이동_됩니다. 따라서 프로그래머는 `s1`은 더 이상 접근 할 수 없습니다.\n" "* 데이터는 `s1`에서 _이동_됩니다. 따라서 프로그래머는 `s1`은 더 이상 접근 할 수 없습니다.\n"
"* `s1`의 스코프가 종료되면 아무 일도 없습니다: 왜냐하면 `s1`은 아무런 소유권이 없기 때문입니다.\n" "* `s1`의 스코프가 종료되면 아무 일도 없습니다: 왜냐하면 `s1`은 아무런 소유권이 없기 때문입니다.\n"
"* `s2`의 스코프가 종료되면 문자열 데이터는 해제됩니다.\n" "* `s2`의 스코프가 종료되면 문자열 데이터는 해제됩니다.\n"
"* 값(데이터)의 소유권을 갖는 변수는 항상 _단_ 하나 입니다." "* 값(데이터)의 소유권을 갖는 변수는 항상 *단* 하나 입니다."
#: src/ownership/move-semantics.md:22 #: src/ownership/move-semantics.md:22
msgid "* Mention that this is the opposite of the defaults in C++, which copies by value unless you use `std::move` (and the move constructor is defined!)." msgid "* Mention that this is the opposite of the defaults in C++, which copies by value unless you use `std::move` (and the move constructor is defined!)."
@ -3923,7 +3922,7 @@ msgstr ""
#: src/ownership/copy-clone.md:1 #: src/ownership/copy-clone.md:1
msgid "# Copying and Cloning" msgid "# Copying and Cloning"
msgstr "# 복사와 복제" msgstr "# 복사(copy)와 복제(clone)"
#: src/ownership/copy-clone.md:3 #: src/ownership/copy-clone.md:3
msgid "While move semantics are the default, certain types are copied by default:" msgid "While move semantics are the default, certain types are copied by default:"
@ -3977,7 +3976,7 @@ msgstr ""
#: src/ownership/copy-clone.md:35 #: src/ownership/copy-clone.md:35
msgid "Copying and cloning are not the same thing:" msgid "Copying and cloning are not the same thing:"
msgstr "복사(copying)와 복제(cloning)는 같지 않습니다:" msgstr "복사(copy)와 복제(clone)는 같지 않습니다:"
#: src/ownership/copy-clone.md:37 #: src/ownership/copy-clone.md:37
msgid "" msgid ""
@ -4023,7 +4022,7 @@ msgstr "# 빌림(Borrowing)"
msgid "" msgid ""
"Instead of transferring ownership when calling a function, you can let a\n" "Instead of transferring ownership when calling a function, you can let a\n"
"function _borrow_ the value:" "function _borrow_ the value:"
msgstr "함수 호출시 값의 소유권을 이동하는 대신의 함수가 값을 _빌려올 수_ 있습니다:" msgstr "함수 호출시 값의 소유권을 이동하는 대신의 함수가 값을 *빌려올 수* 있습니다:"
#: src/ownership/borrowing.md:6 src/ownership/lifetimes-function-calls.md:5 #: src/ownership/borrowing.md:6 src/ownership/lifetimes-function-calls.md:5
msgid "" msgid ""
@ -4157,7 +4156,9 @@ msgid ""
"* After that change, the compiler realizes that `b` is only ever used before the new mutable borrow of `a` through `c`. This is a feature of the borrow checker called \"non-lexical lifetimes\"." "* After that change, the compiler realizes that `b` is only ever used before the new mutable borrow of `a` through `c`. This is a feature of the borrow checker called \"non-lexical lifetimes\"."
msgstr "" msgstr ""
"* 위 코드 컴파일 되지 않습니다. 왜냐하면 `c`는 `a`를 가변 변수로 빌렸고, 이와 동시에 `b`는 `a`를 불변 변수로 빌렸기 때문입니다.\n" "* 위 코드 컴파일 되지 않습니다. 왜냐하면 `c`는 `a`를 가변 변수로 빌렸고, 이와 동시에 `b`는 `a`를 불변 변수로 빌렸기 때문입니다.\n"
"* `b`에 대한 `println!` 구분을 `c`가 있는 스코프 앞으로 이동하면 컴파일이 됩니다.* 이렇게 바꾸면, 컴파일러는 `c`가 `a`를 가변 변수로 빌리기 전에만 `b`가 사용된다는 것을 확인할 수 있습니다. 빌림 검사기의 이러한 기능을 \"non-lexical lifetime\" 이라고 합니다. (_역주_: 단순히 스코프만 보면 `b`의 수명은 `main`함수의 전체라고 생각할 수 있습니다. 때문에 `c`의 블럭 안에서는 `a`에 대한 가변 빌림과 불변 빌림이 동시에 존재하는 것 처럼 보이며, 이는 위 제약 조건을 위반하는 것으로 생각할 수 있습니다. 그러나 컴파일러는 `b`가 `c`블럭이 시작되기 전에만 사용된다는 점을 적극 활용해서 `b`의 수명을 `c`블럭의 시작 전 까지로 줄입니다. 그러면 `b`와 `c`의 수명은 겹치지 않고, 따라서 제약 조건을 위반하지 않습니다.)" "* `b`에 대한 `println!` 구분을 `c`가 있는 스코프 앞으로 이동하면 컴파일이 됩니다.\n"
"* 이렇게 바꾸면, 컴파일러는 `c`가 `a`를 가변 변수로 빌리기 전에만 `b`가 사용된다는 것을 확인할 수 있습니다. 빌림 검사기의 이러한 기능을 \"non-lexical lifetime\" 이라고 합니다.\n"
" * 단순히 스코프만 보면 `b`의 수명은 `main`함수의 전체라고 생각할 수 있습니다. 때문에 `c`의 블럭 안에서는 `a`에 대한 가변 빌림과 불변 빌림이 동시에 존재하는 것 처럼 보이며, 이는 위 제약 조건을 위반하는 것으로 생각할 수 있습니다. 그러나 컴파일러는 `b`가 `c`블럭이 시작되기 전에만 사용된다는 점을 적극 활용해서 `b`의 수명을 `c`블럭의 시작 전 까지로 줄입니다. 그러면 `b`와 `c`의 수명은 겹치지 않고, 따라서 제약 조건을 위반하지 않습니다."
#: src/ownership/lifetimes.md:1 #: src/ownership/lifetimes.md:1
msgid "# Lifetimes" msgid "# Lifetimes"
@ -4165,7 +4166,7 @@ msgstr "# 수명"
#: src/ownership/lifetimes.md:3 #: src/ownership/lifetimes.md:3
msgid "A borrowed value has a _lifetime_:" msgid "A borrowed value has a _lifetime_:"
msgstr "빌려온 값은 _수명_을 갖습니다:" msgstr "빌려온 값은 *수명*을 갖습니다:"
#: src/ownership/lifetimes.md:5 #: src/ownership/lifetimes.md:5
msgid "" msgid ""
@ -4221,7 +4222,7 @@ msgstr ""
"* `'a`는 제네릭 매개변수로 컴파일러로에 의해 추론됩니다.\n" "* `'a`는 제네릭 매개변수로 컴파일러로에 의해 추론됩니다.\n"
"* 수명의 이름은 `'` 로 시작하며 보통 `'a`를 많이 씁니다.\n" "* 수명의 이름은 `'` 로 시작하며 보통 `'a`를 많이 씁니다.\n"
"* `&'a Point` 는 `Point`의 수명이 `'a` 수명과 최소한 같거나 더 길다는 것을 의미합니다.\n" "* `&'a Point` 는 `Point`의 수명이 `'a` 수명과 최소한 같거나 더 길다는 것을 의미합니다.\n"
" * 매개변수들이 서로 다른 스코프에 있을 경우 _최소한_이라는 조건이 중요합니다." " * 매개변수들이 서로 다른 스코프에 있을 경우 \"최소한\"이라는 조건이 중요합니다."
#: src/ownership/lifetimes-function-calls.md:31 #: src/ownership/lifetimes-function-calls.md:31
msgid "" msgid ""
@ -4345,7 +4346,7 @@ msgstr "이번 연습문제는 아래 두가지입니다:"
#: src/exercises/day-1/afternoon.md:5 #: src/exercises/day-1/afternoon.md:5
msgid "* A small book library," msgid "* A small book library,"
msgstr "* 작은 도서관," msgstr "* 작은 도서관"
#: src/exercises/day-1/afternoon.md:7 #: src/exercises/day-1/afternoon.md:7
msgid "* Iterators and ownership (hard)." msgid "* Iterators and ownership (hard)."
@ -4523,6 +4524,9 @@ msgid ""
" \n" " \n"
"[Solution](solutions-afternoon.md#designing-a-library)" "[Solution](solutions-afternoon.md#designing-a-library)"
msgstr "" msgstr ""
"<details>\n"
" \n"
"[해답](solutions-afternoon.md#designing-a-library)"
#: src/exercises/day-1/iterators-and-ownership.md:1 #: src/exercises/day-1/iterators-and-ownership.md:1
msgid "# Iterators and Ownership" msgid "# Iterators and Ownership"
@ -4611,7 +4615,7 @@ msgstr ""
msgid "" msgid ""
"The `Iterator` trait tells you how to _iterate_ once you have created an\n" "The `Iterator` trait tells you how to _iterate_ once you have created an\n"
"iterator. The related trait `IntoIterator` tells you how to create the iterator:" "iterator. The related trait `IntoIterator` tells you how to create the iterator:"
msgstr "`Iterator` 트레잇은 생성된 반복자를 _사용_하는 방법을 알려줍니다. 반면 `IntoIterator` 트레잇은 반복자를 생성하는 방법을 알려줍니다:" msgstr "`Iterator` 트레잇은 생성된 반복자를 *사용*하는 방법을 알려줍니다. 반면 `IntoIterator` 트레잇은 반복자를 *생성*하는 방법을 알려줍니다:"
#: src/exercises/day-1/iterators-and-ownership.md:53 #: src/exercises/day-1/iterators-and-ownership.md:53
msgid "" msgid ""
@ -4646,7 +4650,7 @@ msgstr ""
msgid "" msgid ""
"Note that `IntoIter` and `Item` are linked: the iterator must have the same\n" "Note that `IntoIter` and `Item` are linked: the iterator must have the same\n"
"`Item` type, which means that it returns `Option<Item>`" "`Item` type, which means that it returns `Option<Item>`"
msgstr "`IntoIter`에서 `Item`가 연결되어 있음을 주목하세요. `IntoIter` 반복자는 `Item` 타입의 데이터를 가리켜야 합니다. 즉, 반복자는 `Option<Item>`을 리턴합니다." msgstr "`IntoIter`에는 `Item`이 연결되어 있음을 주목하세요. `IntoIter` 반복자는 `Item` 타입의 데이터를 가리켜야 합니다. 즉, 반복자는 `Option<Item>`을 리턴합니다."
#: src/exercises/day-1/iterators-and-ownership.md:71 #: src/exercises/day-1/iterators-and-ownership.md:71
msgid "Like before, what is the type returned by the iterator?" msgid "Like before, what is the type returned by the iterator?"
@ -4737,7 +4741,7 @@ msgstr "* 흐름 제어: `if`, `if let`, `while`, `while let`, `break`, 그리
msgid "" msgid ""
"* The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, `Rc`\n" "* The Standard Library: `String`, `Option` and `Result`, `Vec`, `HashMap`, `Rc`\n"
" and `Arc`." " and `Arc`."
msgstr "* 표준 라이브러리:: `String`, `Option` 과 `Result`, `Vec`, `HashMap`, `Rc` 그리고 `Arc`." msgstr "* 표준 라이브러리: `String`, `Option` 과 `Result`, `Vec`, `HashMap`, `Rc` 그리고 `Arc`."
#: src/welcome-day-2.md:15 #: src/welcome-day-2.md:15
msgid "* Modules: visibility, paths, and filesystem hierarchy." msgid "* Modules: visibility, paths, and filesystem hierarchy."
@ -4807,8 +4811,7 @@ msgstr ""
"* 사람들에게 다른 종류의 구조체가 있음을 알게 하기에 좋은 시간일 것입니다.\n" "* 사람들에게 다른 종류의 구조체가 있음을 알게 하기에 좋은 시간일 것입니다.\n"
" * 0 크기 구조체(예: `struct Foo;`)는 데이터를 가지고 있지 않지만 특정 타입의 트레잇을 구현할 때 유용합니다.\n" " * 0 크기 구조체(예: `struct Foo;`)는 데이터를 가지고 있지 않지만 특정 타입의 트레잇을 구현할 때 유용합니다.\n"
" * 다음 슬라이드에서는 필드 이름이 덜 중요할 때 사용할 수 있는 튜플 구조체를 소개합니다.\n" " * 다음 슬라이드에서는 필드 이름이 덜 중요할 때 사용할 수 있는 튜플 구조체를 소개합니다.\n"
"* `..peter` 문법은 한 구조체에서 다른 구조체로 대부분의 값을 복사하려고 하는 경우에 하나하나 타이핑하는\n" "* `..peter` 문법은 한 구조체에서 다른 구조체로 대부분의 값을 복사하려고 하는 경우에 하나하나 타이핑하는 수고를 덜어줍니다. 반드시 맨 마지막에 와야 합니다."
" 수고를 덜어줍니다. 반드시 맨 마지막에 와야 합니다."
#: src/structs/tuple-structs.md:1 #: src/structs/tuple-structs.md:1
msgid "# Tuple Structs" msgid "# Tuple Structs"
@ -4883,11 +4886,9 @@ msgid ""
msgstr "" msgstr ""
"* 뉴타입은 다음과 같은 원시타입 값에 특별한 의미를 부여하는 데 유용합니다.\n" "* 뉴타입은 다음과 같은 원시타입 값에 특별한 의미를 부여하는 데 유용합니다.\n"
" * 단위 표시를 위한 숫자: 위 예제에서는 뉴턴 단위 표기를 위해 사용합니다.\n" " * 단위 표시를 위한 숫자: 위 예제에서는 뉴턴 단위 표기를 위해 사용합니다.\n"
" * 값이 생성될 때 이미 유효성 검사를 통과 했으므로 추가적인 검사가 필요없는 경우:\n" " * 값이 생성될 때 이미 유효성 검사를 통과 했으므로 추가적인 검사가 필요없는 경우: `PhoneNumber(String)`또는 `OddNumber(u32)`\n"
" `PhoneNumber(String)`또는 `OddNumber(u32)`\n"
"* `Newtons` 타입의 값에 `f64` 값을 더하는 방법을 보여주세요.\n" "* `Newtons` 타입의 값에 `f64` 값을 더하는 방법을 보여주세요.\n"
" * 러스트는 대체로 분명하지 않은 것을 싫어합니다. 예를 들면 자동으로 unwrap하거나 불리언 값을 정수 값으로\n" " * 러스트는 대체로 분명하지 않은 것을 싫어합니다. 예를 들면 자동으로 unwrap하거나 불리언 값을 정수 값으로 사용하는 것들이 그렇습니다.\n"
" 사용하는 것들이 그렇습니다.\n"
" * 연산자 재정의는 3일차 제네릭 부분에서 다룹니다.\n" " * 연산자 재정의는 3일차 제네릭 부분에서 다룹니다.\n"
"</details>" "</details>"
@ -4899,7 +4900,7 @@ msgstr "# 필드 할당 단축 문법(Field Shorthand Syntax)"
msgid "" msgid ""
"If you already have variables with the right names, then you can create the\n" "If you already have variables with the right names, then you can create the\n"
"struct using a shorthand:" "struct using a shorthand:"
msgstr "구조체 필드와 동일한 이름의 변수가 있다면 아래와 같이 _짧은 문법_ 으로 구조체를 생성할 수 있습니다:" msgstr "구조체 필드와 동일한 이름의 변수가 있다면 아래와 같이 \"짧은 문법\"으로 구조체를 생성할 수 있습니다:"
#: src/structs/field-shorthand.md:6 src/methods.md:6 #: src/structs/field-shorthand.md:6 src/methods.md:6
msgid "" msgid ""
@ -4950,6 +4951,9 @@ msgid ""
"* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.\n" "* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.\n"
"* Use `{:#?}` when printing structs to request the `Debug` representation." "* Use `{:#?}` when printing structs to request the `Debug` representation."
msgstr "" msgstr ""
"* 메서드는 `impl` 블록에 정의됩니다.\n"
"* `peter`와 구조체 업데이트 문법을 사용하여 새로운 구조체 인스턴스를 만들어보세요. 이때, `peter`는 더이상 사용할 수 없게 됩니다.\n"
"* 구조체를 `Debug` 형태로 출력하려면 `{:#?}`를 사용하세요."
#: src/enums.md:1 #: src/enums.md:1
msgid "# Enums" msgid "# Enums"
@ -5097,7 +5101,9 @@ msgstr ""
"* `match`는 주어진 열거형 값이 실제로 어떤 variant인지 판단하기 위해, 그 variant의 종류가 기록된, 숨겨진 필드(식별자)의 값을 검사합니다.\n" "* `match`는 주어진 열거형 값이 실제로 어떤 variant인지 판단하기 위해, 그 variant의 종류가 기록된, 숨겨진 필드(식별자)의 값을 검사합니다.\n"
"* `std::mem::discriminant()`를 이용하여 식별자를 얻을 수도 있습니다.\n" "* `std::mem::discriminant()`를 이용하여 식별자를 얻을 수도 있습니다.\n"
" * 이는 각 필드 값을 굳이 비교할 필요 없는 구조체에 대해 `PartialEq` 트레잇을 구현할 때 유용합니다.\n" " * 이는 각 필드 값을 굳이 비교할 필요 없는 구조체에 대해 `PartialEq` 트레잇을 구현할 때 유용합니다.\n"
"* `WebEvent::Click { ... }`은 최상위 레벨 구조체 `struct Click {...}`를 따로 정의하고 `WebEvent::Click(Click)`처럼 튜플 형태로 정의한 것과 정확히 같진 않습니다. 예를 들어 `WebEvent::Click { ... }` 로 정의한 경우, 구조체 형태와 유사하지만 트레잇을 구현 할 수 없습니다." "* `WebEvent::Click { ... }`은 최상위 레벨 구조체 `struct Click {...}`를 따로 정의하고 `WebEvent::Click(Click)`처럼 튜플 형태로 정의한 것과 정확히 같진 않습니다. 예를 들어 `WebEvent::Click { ... }` 로 정의한 경우, 구조체 형태와 유사하지만 트레잇을 구현 할 수 없습니다.\n"
" \n"
"</details>"
#: src/enums/sizes.md:1 #: src/enums/sizes.md:1
msgid "# Enum Sizes" msgid "# Enum Sizes"
@ -5800,7 +5806,7 @@ msgstr ""
"```\n" "```\n"
"* 엘리먼트를 매칭할 때 `_`를 사용하는 패턴을 추가해 보세요.\n" "* 엘리먼트를 매칭할 때 `_`를 사용하는 패턴을 추가해 보세요.\n"
"* 배열에 값을 더 추가해 보세요.\n" "* 배열에 값을 더 추가해 보세요.\n"
"* `..`가 서로 다른 개수의 엘리먼트들에 대해 어떻게 확장되는지 설명하세요.\n " "* `..`가 서로 다른 개수의 엘리먼트들에 대해 어떻게 확장되는지 설명하세요.\n"
"* `[.., b]`나 `[a@.., b]`와 같은 패턴으로 꼬리 부분을 매칭하는 것을 보여주세요.\n" "* `[.., b]`나 `[a@.., b]`와 같은 패턴으로 꼬리 부분을 매칭하는 것을 보여주세요.\n"
"</details>" "</details>"