diff --git a/po/ko.po b/po/ko.po index ae5b4155..33bd39ea 100644 --- a/po/ko.po +++ b/po/ko.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: [ํ•œ๊ตญ์–ด]Comprehensive Rust ๐Ÿฆ€\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-02-19 06:58+0000\n" +"PO-Revision-Date: 2023-02-20 13:05+0900\n" "Last-Translator: keispace \n" "Language-Team: \n" "Language: ko\n" @@ -124,8 +124,8 @@ msgstr "๋ฉ”์„œ๋“œ" msgid "Overloading" msgstr "์˜ค๋ฒ„๋กœ๋”ฉ" -#: src/SUMMARY.md:36 src/SUMMARY.md:65 src/SUMMARY.md:89 src/SUMMARY.md:118 src/SUMMARY.md:147 -#: src/SUMMARY.md:175 src/SUMMARY.md:198 src/SUMMARY.md:225 +#: src/SUMMARY.md:36 src/SUMMARY.md:65 src/SUMMARY.md:89 src/SUMMARY.md:118 +#: src/SUMMARY.md:147 src/SUMMARY.md:175 src/SUMMARY.md:198 src/SUMMARY.md:225 msgid "Exercises" msgstr "์—ฐ์Šต๋ฌธ์ œ" @@ -832,8 +832,7 @@ msgid "" "writing code for Android itself, the operating system. " msgstr "" "์ด ๊ฐ•์˜์—์„œ๋Š” ๋Ÿฌ์ŠคํŠธ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ **์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜**์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" -"์ด ๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ํŠนํ™”๋œ ๋‚ด์šฉ์€ ์•ˆ๋“œ๋กœ์ด๋“œ OS์˜ ์ผ๋ถ€๋ฅผ ๋Ÿฌ์ŠคํŠธ๋กœ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฒƒ์ž…" -"๋‹ˆ๋‹ค." +"์ด ๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ํŠนํ™”๋œ ๋‚ด์šฉ์€ ์•ˆ๋“œ๋กœ์ด๋“œ OS์˜ ์ผ๋ถ€๋ฅผ ๋Ÿฌ์ŠคํŠธ๋กœ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/welcome.md:24 msgid "## Non-Goals" @@ -843,9 +842,7 @@ msgstr "## ์ œ์™ธ์‚ฌํ•ญ" msgid "" "Rust is a large language and we won't be able to cover all of it in a few days.\n" "Some non-goals of this course are:" -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” ๋ช‡์ผ๋งŒ์— ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š์Šต" -"๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ๋ช‡์ผ๋งŒ์— ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/welcome.md:29 msgid "" @@ -857,11 +854,8 @@ msgid "" " Book](https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by\n" " Example](https://doc.rust-lang.org/rust-by-example/macros.html) instead." msgstr "" -"* ๋น„๋™๊ธฐ์  ๋Ÿฌ์ŠคํŠธ ์‚ฌ์šฉ๋ฒ• --- ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ธ๊ธ‰์ •๋„๋Š” ํ•˜๊ฒ ์ง€๋งŒ ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Asynchronous " -"Programming in Rust](https://rust-lang.github.io/async-book/)๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.\n" -"* ๋งคํฌ๋กœ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•. [Chapter 19.5 in the Rust Book](https://doc.rust-lang.org/book/ch19-06-" -"macros.html)์™€ [Rust by Example](https://doc.rust-lang.org/rust-by-example/macros.html)๋ฅผ ์ฐธ์กฐํ•˜์„ธ" -"์š”." +"* ๋น„๋™๊ธฐ์  ๋Ÿฌ์ŠคํŠธ ์‚ฌ์šฉ๋ฒ• --- ๊ฐ„๋‹จํ•˜๊ฒŒ ์–ธ๊ธ‰์ •๋„๋Š” ํ•˜๊ฒ ์ง€๋งŒ ์ข€ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/)๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”.\n" +"* ๋งคํฌ๋กœ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•. [Chapter 19.5 in the Rust Book](https://doc.rust-lang.org/book/ch19-06-macros.html)์™€ [Rust by Example](https://doc.rust-lang.org/rust-by-example/macros.html)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." #: src/welcome.md:37 msgid "## Assumptions" @@ -884,44 +878,56 @@ msgstr "" "C/C++์„ ๋ชจ๋ฅด๋”๋ผ๋„ ๋™์  ํƒ€์ž… ์–ธ์–ด(Python์ด๋‚˜ JavaScript ๋“ฑ) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜์ด \n" "์žˆ๋‹ค๋ฉด ๋”ฐ๋ผ์˜ค๋Š”๋ฐ ํฐ ๋ฌธ์ œ๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค." -#: src/welcome.md:46 src/cargo/rust-ecosystem.md:19 src/cargo/code-samples.md:22 -#: src/cargo/running-locally.md:68 src/welcome-day-1.md:14 src/welcome-day-1/what-is-rust.md:19 +#: src/welcome.md:46 src/cargo/rust-ecosystem.md:19 +#: src/cargo/code-samples.md:22 src/cargo/running-locally.md:68 +#: src/welcome-day-1.md:14 src/welcome-day-1/what-is-rust.md:19 #: src/hello-world.md:20 src/hello-world/small-example.md:21 src/why-rust.md:9 -#: src/why-rust/compile-time.md:14 src/why-rust/runtime.md:8 src/why-rust/modern.md:19 -#: src/basic-syntax/compound-types.md:28 src/basic-syntax/slices.md:18 -#: src/basic-syntax/string-slices.md:25 src/basic-syntax/functions.md:33 -#: src/basic-syntax/functions-interlude.md:25 src/exercises/day-1/morning.md:9 -#: src/exercises/day-1/for-loops.md:90 src/basic-syntax/variables.md:15 -#: src/basic-syntax/type-inference.md:24 src/basic-syntax/static-and-const.md:46 +#: src/why-rust/compile-time.md:14 src/why-rust/runtime.md:8 +#: src/why-rust/modern.md:19 src/basic-syntax/compound-types.md:28 +#: src/basic-syntax/slices.md:18 src/basic-syntax/string-slices.md:25 +#: src/basic-syntax/functions.md:33 src/basic-syntax/functions-interlude.md:25 +#: src/exercises/day-1/morning.md:9 src/exercises/day-1/for-loops.md:90 +#: src/basic-syntax/variables.md:15 src/basic-syntax/type-inference.md:24 +#: src/basic-syntax/static-and-const.md:46 #: src/basic-syntax/scopes-shadowing.md:23 src/memory-management/stack.md:26 #: src/memory-management/rust.md:12 src/ownership/move-semantics.md:20 #: src/ownership/moves-function-calls.md:18 src/ownership/copy-clone.md:33 #: src/ownership/borrowing.md:25 src/ownership/shared-unique-borrows.md:23 -#: src/ownership/lifetimes-function-calls.md:27 src/ownership/lifetimes-data-structures.md:23 +#: src/ownership/lifetimes-function-calls.md:27 +#: src/ownership/lifetimes-data-structures.md:23 #: src/exercises/day-1/afternoon.md:9 src/structs/tuple-structs.md:35 -#: src/structs/field-shorthand.md:25 src/enums/variant-payloads.md:33 src/methods.md:28 -#: src/pattern-matching/destructuring-enums.md:33 src/pattern-matching/destructuring-arrays.md:18 +#: src/structs/field-shorthand.md:25 src/enums/variant-payloads.md:33 +#: src/methods.md:28 src/pattern-matching/destructuring-enums.md:33 +#: src/pattern-matching/destructuring-arrays.md:18 #: src/pattern-matching/match-guards.md:20 src/exercises/day-2/morning.md:9 #: src/exercises/day-2/points-polygons.md:115 src/control-flow/blocks.md:40 -#: src/control-flow/if-expressions.md:29 src/control-flow/if-let-expressions.md:19 -#: src/control-flow/while-let-expressions.md:25 src/control-flow/match-expressions.md:25 -#: src/std/option-result.md:16 src/std/string.md:28 src/std/vec.md:35 src/std/hashmap.md:36 -#: src/std/box.md:32 src/std/box-recursive.md:31 src/std/rc.md:29 src/modules.md:26 -#: src/modules/visibility.md:37 src/modules/filesystem.md:24 src/exercises/day-2/afternoon.md:5 -#: src/traits.md:39 src/traits/iterator.md:30 src/traits/from-iterator.md:15 +#: src/control-flow/if-expressions.md:29 +#: src/control-flow/if-let-expressions.md:19 +#: src/control-flow/while-let-expressions.md:25 +#: src/control-flow/match-expressions.md:25 src/std/option-result.md:16 +#: src/std/string.md:28 src/std/vec.md:35 src/std/hashmap.md:36 +#: src/std/box.md:32 src/std/box-recursive.md:31 src/std/rc.md:29 +#: src/modules.md:26 src/modules/visibility.md:37 src/modules/filesystem.md:24 +#: src/exercises/day-2/afternoon.md:5 src/traits.md:39 +#: src/traits/iterator.md:30 src/traits/from-iterator.md:15 #: src/traits/operators.md:24 src/traits/drop.md:32 src/traits/default.md:38 -#: src/generics/methods.md:23 src/generics/trait-bounds.md:33 src/generics/impl-trait.md:22 -#: src/generics/closures.md:23 src/exercises/day-3/morning.md:5 src/error-handling/result.md:25 -#: src/error-handling/try-operator.md:48 src/error-handling/converting-error-types-example.md:48 -#: src/error-handling/deriving-error-enums.md:37 src/error-handling/dynamic-errors.md:34 -#: src/error-handling/error-contexts.md:33 src/unsafe.md:26 src/unsafe/raw-pointers.md:24 -#: src/unsafe/mutable-static-variables.md:30 src/unsafe/unions.md:19 -#: src/unsafe/writing-unsafe-functions.md:31 src/unsafe/extern-functions.md:19 -#: src/unsafe/unsafe-traits.md:28 src/exercises/day-3/afternoon.md:5 src/concurrency/threads.md:28 +#: src/generics/methods.md:23 src/generics/trait-bounds.md:33 +#: src/generics/impl-trait.md:22 src/generics/closures.md:23 +#: src/exercises/day-3/morning.md:5 src/error-handling/result.md:25 +#: src/error-handling/try-operator.md:48 +#: src/error-handling/converting-error-types-example.md:48 +#: src/error-handling/deriving-error-enums.md:37 +#: src/error-handling/dynamic-errors.md:34 +#: src/error-handling/error-contexts.md:33 src/unsafe.md:26 +#: src/unsafe/raw-pointers.md:24 src/unsafe/mutable-static-variables.md:30 +#: src/unsafe/unions.md:19 src/unsafe/writing-unsafe-functions.md:31 +#: src/unsafe/extern-functions.md:19 src/unsafe/unsafe-traits.md:28 +#: src/exercises/day-3/afternoon.md:5 src/concurrency/threads.md:28 #: src/concurrency/channels.md:25 src/concurrency/shared_state/arc.md:27 #: src/concurrency/shared_state/example.md:21 src/concurrency/send-sync.md:18 #: src/concurrency/send-sync/sync.md:12 src/exercises/day-4/morning.md:10 -#: src/android/interoperability/with-c/rust.md:81 src/exercises/day-4/afternoon.md:10 +#: src/android/interoperability/with-c/rust.md:81 +#: src/exercises/day-4/afternoon.md:10 msgid "
" msgstr "
" @@ -934,37 +940,49 @@ msgstr "" "์ด๊ฒƒ์€ _๋ฐœํ‘œ์ž ๋…ธํŠธ_์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ด์šฉํ•ด์„œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.\n" "์ฃผ๋กœ ๊ฐ•์˜์‹ค์—์„œ ์ œ๊ธฐ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€๊ณผ ๊ฐ•์‚ฌ๊ฐ€ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ํ‚ค ํฌ์ธํŠธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." -#: src/welcome.md:52 src/cargo/rust-ecosystem.md:67 src/cargo/code-samples.md:35 -#: src/cargo/running-locally.md:74 src/welcome-day-1.md:42 src/welcome-day-1/what-is-rust.md:29 +#: src/welcome.md:52 src/cargo/rust-ecosystem.md:67 +#: src/cargo/code-samples.md:35 src/cargo/running-locally.md:74 +#: src/welcome-day-1.md:42 src/welcome-day-1/what-is-rust.md:29 #: src/hello-world.md:36 src/hello-world/small-example.md:44 src/why-rust.md:24 -#: src/why-rust/compile-time.md:35 src/why-rust/runtime.md:22 src/why-rust/modern.md:66 -#: src/basic-syntax/compound-types.md:62 src/basic-syntax/references.md:28 -#: src/basic-syntax/slices.md:36 src/basic-syntax/functions.md:54 src/exercises/day-1/morning.md:28 +#: src/why-rust/compile-time.md:35 src/why-rust/runtime.md:22 +#: src/why-rust/modern.md:66 src/basic-syntax/compound-types.md:62 +#: src/basic-syntax/references.md:28 src/basic-syntax/slices.md:36 +#: src/basic-syntax/functions.md:54 src/exercises/day-1/morning.md:28 #: src/exercises/day-1/for-loops.md:95 src/basic-syntax/variables.md:20 -#: src/basic-syntax/type-inference.md:48 src/basic-syntax/static-and-const.md:52 +#: src/basic-syntax/type-inference.md:48 +#: src/basic-syntax/static-and-const.md:52 #: src/basic-syntax/scopes-shadowing.md:39 src/memory-management/stack.md:49 #: src/memory-management/rust.md:18 src/ownership/move-semantics.md:26 #: src/ownership/moves-function-calls.md:26 src/ownership/borrowing.md:51 -#: src/ownership/shared-unique-borrows.md:29 src/ownership/lifetimes-function-calls.md:60 -#: src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:103 src/structs.md:41 -#: src/enums/variant-payloads.md:41 src/enums/sizes.md:136 src/methods/example.md:53 -#: src/pattern-matching/destructuring-enums.md:39 src/exercises/day-2/morning.md:15 -#: src/exercises/day-2/points-polygons.md:125 src/control-flow/if-let-expressions.md:26 -#: src/control-flow/for-expressions.md:29 src/control-flow/loop-expressions.md:27 src/std.md:31 -#: src/std/option-result.md:25 src/std/string.md:33 src/std/vec.md:49 src/std/hashmap.md:66 -#: src/std/rc.md:66 src/modules.md:32 src/modules/visibility.md:48 src/modules/filesystem.md:53 -#: src/exercises/day-2/afternoon.md:11 src/traits.md:54 src/traits/from-iterator.md:26 -#: src/traits/operators.md:38 src/traits/drop.md:42 src/traits/default.md:47 -#: src/generics/methods.md:31 src/generics/closures.md:38 src/exercises/day-3/morning.md:11 -#: src/error-handling/try-operator.md:55 src/error-handling/converting-error-types-example.md:60 -#: src/error-handling/deriving-error-enums.md:45 src/error-handling/dynamic-errors.md:41 -#: src/error-handling/error-contexts.md:42 src/unsafe.md:32 src/unsafe/raw-pointers.md:42 -#: src/unsafe/mutable-static-variables.md:35 src/unsafe/unions.md:28 -#: src/unsafe/writing-unsafe-functions.md:38 src/unsafe/extern-functions.md:28 -#: src/unsafe/unsafe-traits.md:37 src/exercises/day-3/afternoon.md:11 src/concurrency/threads.md:45 +#: src/ownership/shared-unique-borrows.md:29 +#: src/ownership/lifetimes-function-calls.md:60 +#: src/exercises/day-1/afternoon.md:15 src/exercises/day-1/book-library.md:103 +#: src/structs.md:41 src/enums/variant-payloads.md:41 src/enums/sizes.md:136 +#: src/methods/example.md:53 src/pattern-matching/destructuring-enums.md:39 +#: src/exercises/day-2/morning.md:15 src/exercises/day-2/points-polygons.md:125 +#: src/control-flow/if-let-expressions.md:26 +#: src/control-flow/for-expressions.md:29 +#: src/control-flow/loop-expressions.md:27 src/std.md:31 +#: src/std/option-result.md:25 src/std/string.md:33 src/std/vec.md:49 +#: src/std/hashmap.md:66 src/std/rc.md:66 src/modules.md:32 +#: src/modules/visibility.md:48 src/modules/filesystem.md:53 +#: src/exercises/day-2/afternoon.md:11 src/traits.md:54 +#: src/traits/from-iterator.md:26 src/traits/operators.md:38 +#: src/traits/drop.md:42 src/traits/default.md:47 src/generics/methods.md:31 +#: src/generics/closures.md:38 src/exercises/day-3/morning.md:11 +#: src/error-handling/try-operator.md:55 +#: src/error-handling/converting-error-types-example.md:60 +#: src/error-handling/deriving-error-enums.md:45 +#: src/error-handling/dynamic-errors.md:41 +#: src/error-handling/error-contexts.md:42 src/unsafe.md:32 +#: src/unsafe/raw-pointers.md:42 src/unsafe/mutable-static-variables.md:35 +#: src/unsafe/unions.md:28 src/unsafe/writing-unsafe-functions.md:38 +#: src/unsafe/extern-functions.md:28 src/unsafe/unsafe-traits.md:37 +#: src/exercises/day-3/afternoon.md:11 src/concurrency/threads.md:45 #: src/concurrency/channels.md:32 src/concurrency/shared_state/arc.md:38 -#: src/concurrency/shared_state/example.md:60 src/concurrency/send-sync/sync.md:18 -#: src/exercises/day-4/morning.md:16 src/android/interoperability/with-c/rust.md:86 +#: src/concurrency/shared_state/example.md:60 +#: src/concurrency/send-sync/sync.md:18 src/exercises/day-4/morning.md:16 +#: src/android/interoperability/with-c/rust.md:86 #: src/exercises/day-4/afternoon.md:15 msgid "
" msgstr "
" @@ -994,10 +1012,7 @@ msgid "" " contributing more speaker notes!). You should make sure to open the speaker\n" " notes in a popup (click the link with a little arrow next to \"Speaker\n" " Notes\"). This way you have a clean screen to present to the class." -msgstr "" -"1. ๊ฐ•์˜ ์ž๋ฃŒ๋ฅผ ์ˆ™์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์š”์ ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ํŽ˜์ด์ง€์— ๊ฐ•์˜ ์ฐธ์กฐ๋…ธํŠธ๋ฅผ ํฌํ•จํ•˜์˜€์Šต๋‹ˆ๋‹ค. " -"(์ถ”๊ฐ€์ ์ธ ๋…ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ œ๊ณตํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ๊ฐ•์˜ ์ฐธ์กฐ ๋…ธํŠธ์˜ ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฐ•์˜๋…ธํŠธ๊ฐ€ " -"๋ณ„๋„์˜ ํŒ์—…์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๋˜๋ฉฐ, ๋ฉ”์ธ ํ™”๋ฉด์—์„œ๋Š” ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค." +msgstr "1. ๊ฐ•์˜ ์ž๋ฃŒ๋ฅผ ์ˆ™์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์š”์ ์„ ๊ฐ•์กฐํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ํŽ˜์ด์ง€์— ๊ฐ•์˜ ์ฐธ์กฐ๋…ธํŠธ๋ฅผ ํฌํ•จํ•˜์˜€์Šต๋‹ˆ๋‹ค. (์ถ”๊ฐ€์ ์ธ ๋…ธํŠธ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์ œ๊ณตํ•ด ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ๊ฐ•์˜ ์ฐธ์กฐ ๋…ธํŠธ์˜ ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฐ•์˜๋…ธํŠธ๊ฐ€ ๋ณ„๋„์˜ ํŒ์—…์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๋˜๋ฉฐ, ๋ฉ”์ธ ํ™”๋ฉด์—์„œ๋Š” ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค." #: src/running-the-course.md:16 msgid "" @@ -1005,9 +1020,7 @@ msgid "" " schedule the four days over two weeks. Course participants have said that\n" " they find it helpful to have a gap in the course since it helps them process\n" " all the information we give them." -msgstr "" -"2. ๊ฐ•์˜ ๋‚ ์งœ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋‚ด์šฉ์ด ๋งŽ๊ณ  ์ˆ˜๊ฐ•์ƒ๋“ค์ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„์— ํ‹ˆ์„ ๋‘์–ด " -"2์ฃผ์— ๊ฑธ์ณ 4์ผ์„ ์žก๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. " +msgstr "2. ๊ฐ•์˜ ๋‚ ์งœ๋ฅผ ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋‚ด์šฉ์ด ๋งŽ๊ณ  ์ˆ˜๊ฐ•์ƒ๋“ค์ด ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„์— ํ‹ˆ์„ ๋‘์–ด 2์ฃผ์— ๊ฑธ์ณ 4์ผ์„ ์žก๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. " #: src/running-the-course.md:21 msgid "" @@ -1015,16 +1028,13 @@ msgid "" " class size of 15-20 people. That's small enough that people are comfortable\n" " asking questions --- it's also small enough that one instructor will have\n" " time to answer the questions." -msgstr "" -"3. ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ฐ•์ƒ๊ณผ ๊ฐ•์‚ฌ๊ฐ€ ์งˆ์˜๋ฅผ ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 15์—์„œ " -"20๋ช… ๊ทœ๋ชจ์˜ ๊ณต๊ฐ„์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค." +msgstr "3. ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๊ฐ•์ƒ๊ณผ ๊ฐ•์‚ฌ๊ฐ€ ์งˆ์˜๋ฅผ ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 15์—์„œ 20๋ช… ๊ทœ๋ชจ์˜ ๊ณต๊ฐ„์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค." #: src/running-the-course.md:26 msgid "" "4. On the day of your course, show up to the room a little early to set things\n" " up. We recommend presenting directly using `mdbook serve` running on your\n" -" laptop (see the [installation instructions][5]). This ensures optimal performance with no lag " -"as you change pages.\n" +" laptop (see the [installation instructions][5]). This ensures optimal performance with no lag as you change pages.\n" " Using your laptop will also allow you to fix typos as you or the course\n" " participants spot them." msgstr "" @@ -1040,12 +1050,9 @@ msgid "" " and offer a solution, e.g., by showing people where to find the relevant\n" " information in the standard library." msgstr "" -"5. ์ˆ˜๊ฐ•์ƒ๋“ค์ด ์ง์ ‘ (๊ฐœ๋ณ„ ํ˜น์€ ๊ทธ๋ฃน์œผ๋กœ) ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ’€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰์ด ๋ง‰ํ˜€ ๋„์›€์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ˆ˜" -"๊ฐ•์ƒ์ด\n" -" ์—†๋Š”์ง€ ์ˆ˜์‹œ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ ๋ฌธ์ œ๋ฅผ ๊ฐ•์˜์‹ค ์ „์ฒด ์ธ์›์—" -"๊ฒŒ ์•Œ๋ฆฌ๊ณ \n" -" ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์–ด๋””์— ๊ฐ€๋ฉด ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ " -"์•Œ๋ ค ์ค๋‹ˆ๋‹ค." +"5. ์ˆ˜๊ฐ•์ƒ๋“ค์ด ์ง์ ‘ (๊ฐœ๋ณ„ ํ˜น์€ ๊ทธ๋ฃน์œผ๋กœ) ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ’€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ง„ํ–‰์ด ๋ง‰ํ˜€ ๋„์›€์„ ํ•„์š”๋กœ ํ•˜๋Š” ์ˆ˜๊ฐ•์ƒ์ด\n" +" ์—†๋Š”์ง€ ์ˆ˜์‹œ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ฒช๊ณ  ์žˆ๋‹ค๋ฉด, ๊ทธ ๋ฌธ์ œ๋ฅผ ๊ฐ•์˜์‹ค ์ „์ฒด ์ธ์›์—๊ฒŒ ์•Œ๋ฆฌ๊ณ \n" +" ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์–ด๋””์— ๊ฐ€๋ฉด ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค ์ค๋‹ˆ๋‹ค." #: src/running-the-course.md:38 msgid "" @@ -1055,11 +1062,9 @@ msgid "" " checkout. This will ensure that the Android build system sees the\n" " `Android.bp` files in `src/android/`." msgstr "" -"6. 4์ผ์ฐจ์— ์žˆ์„ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ถ€๋ถ„์„ ๊ฑด๋„ˆ๋„์ง€ ์•Š๋Š”๋‹ค๋ฉด [AOSP ์ฝ”๋“œ][1]๋ฅผ ์ฒดํฌ์•„์›ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค" -"์Œ,\n" +"6. 4์ผ์ฐจ์— ์žˆ์„ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ถ€๋ถ„์„ ๊ฑด๋„ˆ๋„์ง€ ์•Š๋Š”๋‹ค๋ฉด [AOSP ์ฝ”๋“œ][1]๋ฅผ ์ฒดํฌ์•„์›ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ,\n" " ๊ฐ™์€ ์ปดํ“จํ„ฐ์—์„œ [๊ณผ์ • ์ €์žฅ์†Œ][2]๋ฅผ ์ฒดํฌ์•„์›ƒํ•˜๊ณ  `src/android/` ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ AOSP ์ฝ”๋“œ์˜ ๋ฃจํŠธ๋กœ\n" -" ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ๊ณผ์ œ์šฉ์œผ๋กœ ์ถ”๊ฐ€๋œ `Android.bp`ํŒŒ์ผ์„ ์ธ์‹ํ•  " -"์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +" ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ๊ณผ์ œ์šฉ์œผ๋กœ ์ถ”๊ฐ€๋œ `Android.bp`ํŒŒ์ผ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/running-the-course.md:44 msgid "" @@ -1128,8 +1133,7 @@ msgid "" "> which we could attempt to move to Rust? The fewer dependencies the better.\n" "> Parsing code would be ideal." msgstr "" -"> **4์ผ์ฐจ ์—ฐ์Šต๋ฌธ์ œ:** ๋Ÿฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ C/C++๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์ด์ „ํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์ข…์†์„ฑ" -"์ด\n" +"> **4์ผ์ฐจ ์—ฐ์Šต๋ฌธ์ œ:** ๋Ÿฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ C/C++๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ์ด์ „ํ•ด์„œ ์—ฐ๊ฒฐํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์ข…์†์„ฑ์ด\n" "> ์ ์„ ์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ๋ถ„์„ ์ฝ”๋“œ๋ผ๋ฉด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค." #: src/running-the-course/course-structure.md:16 @@ -1224,16 +1228,13 @@ msgstr "# ์นด๊ณ (Cargo) ์‚ฌ์šฉํ•˜๊ธฐ" #: src/cargo.md:3 msgid "" -"When you start reading about Rust, you will soon meet [Cargo](https://doc.rust-lang.org/cargo/), " -"the standard tool\n" +"When you start reading about Rust, you will soon meet [Cargo](https://doc.rust-lang.org/cargo/), the standard tool\n" "used in the Rust ecosystem to build and run Rust applications. Here we want to\n" "give a brief overview of what Cargo is and how it fits into the wider ecosystem\n" "and how it fits into this training." msgstr "" -"๋Ÿฌ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋‹น์‹ ์€ ๊ณง [Cargo](https://doc.rust-lang.org/cargo/)๋ผ๋Š”, ๋Ÿฌ์ŠคํŠธ ์ƒํƒœ๊ณ„์—์„œ " -"์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋นŒ๋“œ/์‹คํ–‰ ๋„๊ตฌ๋ฅผ ๋งŒ๋‚  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. \n" -"์—ฌ๊ธฐ์„œ๋Š” ์นด๊ณ ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์นด๊ณ ๊ฐ€ ๋Ÿฌ์ŠคํŠธ ์ƒํƒœ๊ณ„์—์„œ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ•์˜์—์„œ ์–ด" -"๋–ป๊ฒŒ ์‚ฌ์šฉ๋  ์ง€์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." +"๋Ÿฌ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋‹น์‹ ์€ ๊ณง [Cargo](https://doc.rust-lang.org/cargo/)๋ผ๋Š”, ๋Ÿฌ์ŠคํŠธ ์ƒํƒœ๊ณ„์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ‘œ์ค€ ๋นŒ๋“œ/์‹คํ–‰ ๋„๊ตฌ๋ฅผ ๋งŒ๋‚  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. \n" +"์—ฌ๊ธฐ์„œ๋Š” ์นด๊ณ ๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์นด๊ณ ๊ฐ€ ๋Ÿฌ์ŠคํŠธ ์ƒํƒœ๊ณ„์—์„œ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ•์˜์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋  ์ง€์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." #: src/cargo.md:8 msgid "## Installation" @@ -1244,17 +1245,11 @@ msgid "### Rustup (Recommended)" msgstr "#### Rustup (์ถ”์ฒœ)" #: src/cargo.md:12 -msgid "" -"You can follow the instructions to install cargo and rust compiler, among other standard ecosystem " -"tools with the [rustup][3] tool, which is maintained by the Rust Foundation." -msgstr "" -"๋Ÿฌ์ŠคํŠธ ์žฌ๋‹จ์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” [rustup][3] ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นด๊ณ  ๋ฐ ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ ํ‘œ์ค€ ๋„๊ตฌ๋ฅผ ์„ค" -"์น˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgid "You can follow the instructions to install cargo and rust compiler, among other standard ecosystem tools with the [rustup][3] tool, which is maintained by the Rust Foundation." +msgstr "๋Ÿฌ์ŠคํŠธ ์žฌ๋‹จ์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” [rustup][3] ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์นด๊ณ  ๋ฐ ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ ํ‘œ์ค€ ๋„๊ตฌ๋ฅผ ์„ค์น˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/cargo.md:14 -msgid "" -"Along with cargo and rustc, Rustup will install itself as a command line utility that you can use " -"to install/switch toolchains, setup cross compilation, etc." +msgid "Along with cargo and rustc, Rustup will install itself as a command line utility that you can use to install/switch toolchains, setup cross compilation, etc." msgstr "" "์นด๊ณ (cargo)์™€ ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ(rustc)์™€ ํ•จ๊ป˜, rustup์€ ํˆด์ฒด์ธ์„ ์„ค์น˜ํ•˜๊ณ , ๋‹ค๋ฅธ \n" "ํˆด์ฒด์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ , ํฌ๋กœ์Šค ์ปดํŒŒ์ผ ์„ค์ •์„ ํ•˜๋Š” ์ผ์„ ๋‹ด๋‹นํ•˜๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ \n" @@ -1292,15 +1287,8 @@ msgstr "" "๋ฅผ ์ง€์›ํ•œ๋‹ค๋ฉด ์–ด๋–ค ์—๋””ํ„ฐ๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค." #: 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." -msgstr "" -"์–ด๋–ค ์‚ฌ๋žŒ๋“ค์€ [Jetbrains][4] ์ œํ’ˆ๊ตฐ์„ ์„ ํ˜ธํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ œํ’ˆ๋“ค์€ rust-analyzer ๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š" -"๊ณ  IDE ์ž์ฒด์ ์œผ๋กœ ๊ตฌ๋ถ„๋ถ„์„์„ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด IDE๋ฅผ ์„ค์น˜ํ•˜์…จ๋‹ค๋ฉด [Rust Plugin][5]๋ฅผ ์„ค์น˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž" -"๋‹ˆ๋‹ค. ๋‹ค๋งŒ 2023๋…„ 1์›” ๊ธฐ์ค€, ๋””๋ฒ„๊น…์€ Jetbrains IDEA suite์˜ CLion ๋ฒ„์ „์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜" -"์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +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 ๋ฒ„์ „์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/cargo.md:31 msgid "" @@ -1330,8 +1318,7 @@ msgstr "๋Ÿฌ์ŠคํŠธ์˜ ์ƒํƒœ๊ณ„๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋„๊ตฌ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ msgid "" "* `rustc`: the Rust compiler which turns `.rs` files into binaries and other\n" " intermediate formats." -msgstr "" -"* `rustc`: `.rs` ํ™•์žฅ์ž ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜น์€ ๋‹ค๋ฅธ ์ค‘๊ฐ„ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” Rust ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค." +msgstr "* `rustc`: `.rs` ํ™•์žฅ์ž ํŒŒ์ผ์„ ๋ฐ”์ด๋„ˆ๋ฆฌ ํ˜น์€ ๋‹ค๋ฅธ ์ค‘๊ฐ„ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” Rust ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค." #: src/cargo/rust-ecosystem.md:8 msgid "" @@ -1356,12 +1343,13 @@ msgstr "" "* `rustup`: ๋Ÿฌ์ŠคํŠธ ํˆด์ฒด์ธ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์—…๋ฐ์ดํŠธ ํ”„๋กœ๊ทธ๋žจ. \n" " ์ด ๋„๊ตฌ๋Š” ์ƒˆ ๋ฒ„์ „์˜ ๋Ÿฌ์ŠคํŠธ๊ฐ€ ์ถœ์‹œ๋  ๋•Œ `rustc` ๋ฐ `cargo` ์„ค์น˜ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. \n" " ๋˜ํ•œ `rustup`์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. \n" -" ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋Ÿฌ์ŠคํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ `rustup`์„ ํ†ตํ•ด ํ•„์š”์— ๋”ฐ๋ผ ์ด๋“ค ๋ฒ„์ „์„ ์ „ํ™˜ํ•  ์ˆ˜ " -"์žˆ์Šต๋‹ˆ๋‹ค." +" ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋Ÿฌ์ŠคํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ `rustup`์„ ํ†ตํ•ด ํ•„์š”์— ๋”ฐ๋ผ ์ด๋“ค ๋ฒ„์ „์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." -#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25 src/hello-world/small-example.md:27 -#: src/why-rust/runtime.md:10 src/why-rust/modern.md:21 src/basic-syntax/compound-types.md:30 -#: src/error-handling/try-operator.md:50 src/error-handling/converting-error-types-example.md:50 +#: src/cargo/rust-ecosystem.md:21 src/hello-world.md:25 +#: src/hello-world/small-example.md:27 src/why-rust/runtime.md:10 +#: src/why-rust/modern.md:21 src/basic-syntax/compound-types.md:30 +#: src/error-handling/try-operator.md:50 +#: src/error-handling/converting-error-types-example.md:50 #: src/concurrency/threads.md:30 msgid "Key points:" msgstr "ํ‚ค ํฌ์ธํŠธ:" @@ -1416,16 +1404,12 @@ msgstr "" " ์žˆ์Šต๋‹ˆ๋‹ค." #: src/cargo/rust-ecosystem.md:44 -msgid "" -" * Mention that it is quite rare to ever use the compiler directly not through `cargo` (most " -"users never do)." -msgstr "" -" * `cargo`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Œ์„ ์–ธ๊ธ‰ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgid " * Mention that it is quite rare to ever use the compiler directly not through `cargo` (most users never do)." +msgstr " * `cargo`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Œ์„ ์–ธ๊ธ‰ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/cargo/rust-ecosystem.md:46 msgid "" -" * It might be worth alluding that Cargo itself is an extremely powerful and comprehensive tool. " -"It is capable of many advanced features including but not limited to: \n" +" * It might be worth alluding that Cargo itself is an extremely powerful and comprehensive tool. It is capable of many advanced features including but not limited to: \n" " * Project/package structure\n" " * [workspaces]\n" " * Dev Dependencies and Runtime Dependency management/caching\n" @@ -1488,8 +1472,7 @@ msgid "" "exercises. On the last day, we will do a larger exercise which shows you how to\n" "work with dependencies and for that you need Cargo." msgstr "" -"๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์นด๊ณ (cargo)๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ ๊ณผ์ œ ์ž‘์„ฑ์— ๋” ๋„์›€์ด ๋ " -"๊ฒ๋‹ˆ๋‹ค. \n" +"๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์นด๊ณ (cargo)๋ฅผ ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒŒ ๊ณผ์ œ ์ž‘์„ฑ์— ๋” ๋„์›€์ด ๋ ๊ฒ๋‹ˆ๋‹ค. \n" "๋˜ํ•œ, ๋งˆ์ง€๋ง‰ ๋‚ ์—๋Š” ์˜์กด์„ฑ์ด ์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ์ž‘์—…ํ•˜๊ฒŒ ๋  ํ…๋ฐ, ๊ทธ ๋•Œ์—๋Š” ์–ด์ฐจํ”ผ \n" "์นด๊ณ ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค." @@ -1521,17 +1504,13 @@ msgstr "์ฝ”๋“œ ๋ธ”๋ก์— ํฌ์ปค์Šค๋ฅผ ๋‘๊ณ  Ctrl-Enter๋ฅผ ๋ˆŒ๋Ÿฌ ์‹ค msgid "" "Most code samples are editable like shown above. A few code samples\n" "are not editable for various reasons:" -msgstr "" -"๊ฐ•์˜์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ์€ ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •ํ• ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ " -"์—†์Šต๋‹ˆ๋‹ค: " +msgstr "๊ฐ•์˜์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ ์ƒ˜ํ”Œ์€ ์œ„์™€ ๊ฐ™์ด ์ˆ˜์ •ํ• ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: " #: src/cargo/code-samples.md:27 msgid "" "* The embedded playgrounds cannot execute unit tests. Copy-paste the\n" " code and open it in the real Playground to demonstrate unit tests." -msgstr "" -"* ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋‚ด์žฅ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์‚ฌ์ดํŠธ์— ๋ถ™์—ฌ๋„ฃ์–ด ํ…Œ์Šค" -"ํŠธ๋ฅผ ์‹คํ–‰ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "* ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋‚ด์žฅ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์‚ฌ์ดํŠธ์— ๋ถ™์—ฌ๋„ฃ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/cargo/code-samples.md:30 msgid "" @@ -1539,9 +1518,7 @@ msgid "" " away from the page! This is the reason that the students should\n" " solve the exercises using a local Rust installation or via the\n" " Playground." -msgstr "" -"* ๋‚ด์žฅ๋œ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” ํŽ˜์ด์ง€ ์ด๋™์‹œ ์ž‘์„ฑ๋œ ๋ชจ๋“  ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ์ปฌ ํ™˜๊ฒฝ์ด๋‚˜ ์™ธ" -"๋ถ€ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์‚ฌ์ดํŠธ์—์„œ ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค." +msgstr "* ๋‚ด์žฅ๋œ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์—์„œ๋Š” ํŽ˜์ด์ง€ ์ด๋™์‹œ ์ž‘์„ฑ๋œ ๋ชจ๋“  ๋‚ด์šฉ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ์ปฌ ํ™˜๊ฒฝ์ด๋‚˜ ์™ธ๋ถ€ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์‚ฌ์ดํŠธ์—์„œ ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค." #: src/cargo/running-locally.md:1 msgid "# Running Code Locally with Cargo" @@ -1572,8 +1549,7 @@ msgstr "" msgid "" "With this is in place, then follow these steps to build a Rust binary from one\n" "of the examples in this training:" -msgstr "" -"์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ๊ฐ•์˜์˜ ์ฝ”๋“œ ๋ธ”๋ก์ค‘ ํ•˜๋‚˜๋ฅผ ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ๊ฐ•์˜์˜ ์ฝ”๋“œ ๋ธ”๋ก์ค‘ ํ•˜๋‚˜๋ฅผ ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/cargo/running-locally.md:18 msgid "1. Click the \"Copy to clipboard\" button on the example you want to copy." @@ -1611,9 +1587,7 @@ msgstr "" msgid "" "4. Replace the boiler-plate code in `src/main.rs` with your own code. For\n" " example, using the example on the previous page, make `src/main.rs` look like" -msgstr "" -"4. `src/main.rs`์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ํŽ˜์ด์ง€์˜ ์†Œ์Šค๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด `src/main.rs`์— ์ž‘" -"์„ฑํ•ฉ๋‹ˆ๋‹ค." +msgstr "4. `src/main.rs`์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ํŽ˜์ด์ง€์˜ ์†Œ์Šค๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด `src/main.rs`์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค." #: src/cargo/running-locally.md:41 msgid "" @@ -1647,10 +1621,8 @@ msgid "" " release build in `target/release/`." msgstr "" "6. `cargo check`์ปค๋งจ๋“œ๋Š” ๋น ๋ฅด๊ฒŒ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -" * `cargo build`๋Š” ์‹คํ–‰์—†์ด ์ปดํŒŒ์ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— `target/debug/`ํด๋”์—์„œ output์„ ํ™•์ธ ํ•  " -"์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \n" -" * `cargo build --release`์ปค๋งจ๋“œ๋Š” ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์šฉ ์ตœ์ ํ™”๋ฅผ ์ผœ์„œ ์ปดํŒŒ์ผํ•˜๋ฉฐ `target/release/`ํด๋”" -"์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +" * `cargo build`๋Š” ์‹คํ–‰์—†์ด ์ปดํŒŒ์ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์— `target/debug/`ํด๋”์—์„œ output์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \n" +" * `cargo build --release`์ปค๋งจ๋“œ๋Š” ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์šฉ ์ตœ์ ํ™”๋ฅผ ์ผœ์„œ ์ปดํŒŒ์ผํ•˜๋ฉฐ `target/release/`ํด๋”์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/cargo/running-locally.md:62 msgid "" @@ -1720,14 +1692,11 @@ msgid "" msgstr "" "* ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  ์งˆ๋ฌธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n" "* ์ด ์ˆ˜์—…์€ ์ƒํ˜ธ์ž‘์šฉ์ด ์ค‘์š”ํ•˜๊ณ  ํ† ๋ก ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.\n" -" * ๊ฐ•์‚ฌ๋กœ์„œ ํ† ๋ก ์ด ์˜†๊ธธ๋กœ ์ƒˆ์ง€ ์•Š๊ฒŒ ์ฃผ์˜ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Ÿฌ์ŠคํŠธ์™€ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ๋น„๊ตํ•œ๋‹ค๋“ ์ง€ ํ•˜" -"๋Š” ๊ฒƒ์€\n" -" ์ข‹์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ท ํ˜•์„ ์ฐพ๊ธฐ ์• ๋งคํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ํ† ๋ก ์„ ํ—ˆ์šฉํ•˜๋Š” ์ชฝ์ด ์ผ๋ฐฉ์ ์ธ ๊ฐ•์˜๋ณด๋‹ค๋Š” ๋” ๋งŽ์€ " -"์‚ฌ๋žŒ๋“ค์˜\n" +" * ๊ฐ•์‚ฌ๋กœ์„œ ํ† ๋ก ์ด ์˜†๊ธธ๋กœ ์ƒˆ์ง€ ์•Š๊ฒŒ ์ฃผ์˜ํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Ÿฌ์ŠคํŠธ์™€ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ๋น„๊ตํ•œ๋‹ค๋“ ์ง€ ํ•˜๋Š” ๊ฒƒ์€\n" +" ์ข‹์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ท ํ˜•์„ ์ฐพ๊ธฐ ์• ๋งคํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ํ† ๋ก ์„ ํ—ˆ์šฉํ•˜๋Š” ์ชฝ์ด ์ผ๋ฐฉ์ ์ธ ๊ฐ•์˜๋ณด๋‹ค๋Š” ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜\n" " ์ฐธ์—ฌ๋ฅผ ์ด๋Œ์–ด ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์งˆ๋ฌธ์ด ์Šฌ๋ผ์ด๋“œ๋ณด๋‹ค ์•ž์„œ๊ฐ€๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.\n" -" * ํ•™์Šต์— ์žˆ์–ด์„œ ๋ฐ˜๋ณต์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋“œ๋Š” ๊ทธ์ € ๋„์›€์„ ์ค„ ๋ฟ, ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ฑด๋„ˆ๋„์–ด๋„ ๋ฉ๋‹ˆ" -"๋‹ค." +" * ํ•™์Šต์— ์žˆ์–ด์„œ ๋ฐ˜๋ณต์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋“œ๋Š” ๊ทธ์ € ๋„์›€์„ ์ค„ ๋ฟ, ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ฑด๋„ˆ๋„์–ด๋„ ๋ฉ๋‹ˆ๋‹ค." #: src/welcome-day-1.md:29 msgid "" @@ -1735,10 +1704,8 @@ msgid "" "about the famous borrow checker. The way Rust handles memory is a major feature\n" "and we should show students this right away." msgstr "" -"์ฒซ ๋‚  ๊ฐ•์˜์˜ ๋ชฉํ‘œ๋Š”, ๋Ÿฌ์ŠคํŠธ์—์„œ ๊ทธ ์œ ๋ช…ํ•œ ๋นŒ๋ฆผ ํ™•์ธ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„ ๊นŒ์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ" -"๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" -"๋Ÿฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋…ํŠนํ•œ ํŠน์ง•์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•™์ƒ๋“ค์—๊ฒŒ ์ด ๋ถ€๋ถ„ ์„ ์šฐ์„ ์ ์œผ๋กœ ๋ณด์—ฌ" -"์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค." +"์ฒซ ๋‚  ๊ฐ•์˜์˜ ๋ชฉํ‘œ๋Š”, ๋Ÿฌ์ŠคํŠธ์—์„œ ๊ทธ ์œ ๋ช…ํ•œ ๋นŒ๋ฆผ ํ™•์ธ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„ ๊นŒ์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" +"๋Ÿฌ์ŠคํŠธ์˜ ๊ฐ€์žฅ ๋…ํŠนํ•œ ํŠน์ง•์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ•™์ƒ๋“ค์—๊ฒŒ ์ด ๋ถ€๋ถ„ ์„ ์šฐ์„ ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค." #: src/welcome-day-1.md:33 msgid "" @@ -1746,8 +1713,7 @@ msgid "" "schedule. We suggest splitting the day into two parts (following the slides):" msgstr "" "๋งŒ์•ฝ ๋‹น์‹ ์ด ๊ฐ•์˜์‹ค์—์„œ ๊ฐ€๋ฅด์น˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ์Šฌ๋ผ์ด๋“œ๋Š” ์ผ์ •์„ ๊ฒ€ํ† ํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค. \n" -"ํ•˜๋ฃจ์น˜ ๊ฐ•์˜๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์˜ค์ „ ์˜คํ›„๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. (์Šฌ๋ผ์ด๋“œ๊ฐ€ ๊ทธ๋Ÿฐ์‹์œผ๋กœ๋‚˜๋‰˜์–ด ์žˆ" -"์Šต๋‹ˆ๋‹ค.)" +"ํ•˜๋ฃจ์น˜ ๊ฐ•์˜๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์˜ค์ „ ์˜คํ›„๋กœ ๋‚˜๋ˆ„์–ด ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. (์Šฌ๋ผ์ด๋“œ๊ฐ€ ๊ทธ๋Ÿฐ์‹์œผ๋กœ๋‚˜๋‰˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)" #: src/welcome-day-1.md:36 msgid "" @@ -1863,9 +1829,7 @@ msgstr "" msgid "" "This slide tries to make the students comfortable with Rust code. They will see\n" "a ton of it over the next four days so we start small with something familiar." -msgstr "" -"์ด ์Šฌ๋ผ์ด๋“œ๋Š” ํ•™์ƒ๋“ค์ด ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ์— ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ 4์ผ ๋™์•ˆ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ ‘" -"ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์นœ์ˆ™ํ•œ ์ฝ”๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์ด ์Šฌ๋ผ์ด๋“œ๋Š” ํ•™์ƒ๋“ค์ด ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ์— ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ 4์ผ ๋™์•ˆ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ์ ‘ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ์„  ์นœ์ˆ™ํ•œ ์ฝ”๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค." #: src/hello-world.md:27 msgid "" @@ -1885,9 +1849,7 @@ msgstr "* ๋Ÿฌ์ŠคํŠธ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ์ง€์›๊ณผ ๊ฐ™์€ ํ˜„๋Œ€ ์–ธ์–ด์˜ ํŠน์ง•์„ msgid "" "* Rust uses macros for situations where you want to have a variable number of\n" " arguments (no function [overloading](basic-syntax/functions-interlude.md))." -msgstr "" -"* ๋Ÿฌ์ŠคํŠธ๋Š” ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์‚ฌ์ „์— ์ง€์ •ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ ํ•จ์ˆ˜ [์˜ค๋ฒ„๋กœ๋”ฉ](basic-syntax/functions-" -"interlude.md)๋Œ€์‹  ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." +msgstr "* ๋Ÿฌ์ŠคํŠธ๋Š” ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์‚ฌ์ „์— ์ง€์ •ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ ํ•จ์ˆ˜ [์˜ค๋ฒ„๋กœ๋”ฉ](basic-syntax/functions-interlude.md)๋Œ€์‹  ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/hello-world/small-example.md:1 msgid "# Small Example" @@ -1936,17 +1898,13 @@ msgid "" "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" "inputs." -msgstr "" -"์ด ์ฝ”๋“œ๋Š” ์ฝœ๋ผ์ธ  ์ถ”์ธก(Collatz conjecture)์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค:๋ฐ˜๋ณต๋ฌธ์ด ์–ธ์ œ๋‚˜ ์ข…๋ฃŒ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€๋งŒ ์ฆ" -"๋ช…๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "์ด ์ฝ”๋“œ๋Š” ์ฝœ๋ผ์ธ  ์ถ”์ธก(Collatz conjecture)์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค:๋ฐ˜๋ณต๋ฌธ์ด ์–ธ์ œ๋‚˜ ์ข…๋ฃŒ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€๋งŒ ์ฆ๋ช…๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹คํ–‰ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/hello-world/small-example.md:29 msgid "" "* 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." -msgstr "" -"* ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ปดํŒŒ์ผ ์‹œ ์ •ํ•ด์ง„ ํƒ€์ž…์„ ๊ฐ€์ง์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. i32๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์ถ”๋ก ์„ ํ•˜" -"๋„๋ก ํ•ด ๋ด…๋‹ˆ๋‹ค. i32์„ i8๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์œ ๋ฐœํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "* ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ปดํŒŒ์ผ ์‹œ ์ •ํ•ด์ง„ ํƒ€์ž…์„ ๊ฐ€์ง์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. i32๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํƒ€์ž… ์ถ”๋ก ์„ ํ•˜๋„๋ก ํ•ด ๋ด…๋‹ˆ๋‹ค. i32์„ i8๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์œ ๋ฐœํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/hello-world/small-example.md:32 msgid "* Change `let mut x` to `let x`, discuss the compiler error." @@ -1956,9 +1914,7 @@ msgstr "* `let mut x`๋ฅผ `let x`๋กœ ์ˆ˜์ •ํ•˜์—ฌ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ํ†  msgid "" "* Show how `print!` gives a compilation error if the arguments don't match the\n" " format string." -msgstr "" -"* ์ธ์ž๊ฐ€ ํฌ๋งท ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ `print!`์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ" -"๋‹ค." +msgstr "* ์ธ์ž๊ฐ€ ํฌ๋งท ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ `print!`์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•จ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค." #: src/hello-world/small-example.md:37 msgid "" @@ -1971,10 +1927,7 @@ msgid "" "* 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" " students become familiar with searching in the standard library." -msgstr "" -"ํ•™์ƒ๋“ค์—๊ฒŒ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ์•Œ๋ ค ์ฃผ๊ณ ๋Š”, `print!`๊ฐ€ ์ง€์›ํ•˜๋Š” ํฌ๋งทํŒ… ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์•Œ" -"๊ธฐ ์œ„ํ•ด `std::fmt`๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅด์น˜์„ธ์š”.ํ•™์ƒ๋“ค์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์— ์ต์ˆ™ํ•ด " -"์ง€๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค." +msgstr "ํ•™์ƒ๋“ค์—๊ฒŒ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋”” ์žˆ๋Š”์ง€ ์•Œ๋ ค ์ฃผ๊ณ ๋Š”, `print!`๊ฐ€ ์ง€์›ํ•˜๋Š” ํฌ๋งทํŒ… ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์•Œ๊ธฐ ์œ„ํ•ด `std::fmt`๋ฅผ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊ฐ€๋ฅด์น˜์„ธ์š”.ํ•™์ƒ๋“ค์ด ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์— ์ต์ˆ™ํ•ด ์ง€๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค." #: src/why-rust.md:1 msgid "# Why Rust?" @@ -1998,9 +1951,7 @@ msgstr "" msgid "" "Make sure to ask the class which languages they have experience with. Depending\n" "on the answer you can highlight different features of Rust:" -msgstr "" -"์ˆ˜๊ฐ•์ƒ๋“ค์—๊ฒŒ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋ฌผ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š๋ƒ์— ๋”ฐ๋ผ " -"๋Ÿฌ์ŠคํŠธ์—์„œ ์–ด๋–ค ์ ์„ ๊ฐ•์กฐํ•ด์•ผ ํ• ์ง€๋ฅผ ๊ณ ๋ฏผํ•ด ๋ณด์„ธ์š”." +msgstr "์ˆ˜๊ฐ•์ƒ๋“ค์—๊ฒŒ ์–ด๋–ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋ฌผ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์–ด๋–ค ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š๋ƒ์— ๋”ฐ๋ผ ๋Ÿฌ์ŠคํŠธ์—์„œ ์–ด๋–ค ์ ์„ ๊ฐ•์กฐํ•ด์•ผ ํ• ์ง€๋ฅผ ๊ณ ๋ฏผํ•ด ๋ณด์„ธ์š”." #: src/why-rust.md:14 msgid "" @@ -2008,11 +1959,7 @@ msgid "" " via the borrow checker. You get performance like in C and C++, but you don't\n" " have the memory unsafety issues. In addition, you get a modern language with\n" " constructs like pattern matching and built-in dependency management." -msgstr "" -"* C/C++: ๋Ÿฌ์ŠคํŠธ๋Š” '๋นŒ๋ฆผ'๊ฒ€์‚ฌ๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” C" -"์™€ C++๊ณผ ๋น„์Šทํ•œ ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ๋„, ๊ทธ ์–ธ์–ด๋“ค์—์„œ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ" -"๋‹ค. ๋˜ํ•œ, ํŒจํ„ด ๋งค์นญ์ด๋‚˜, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์ข…์†์„ฑ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ํ˜„๋Œ€์ ์ธ ์–ธ์–ด์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ" -"๋‹ค." +msgstr "* C/C++: ๋Ÿฌ์ŠคํŠธ๋Š” '๋นŒ๋ฆผ'๊ฒ€์‚ฌ๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜ํ–‰์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” C์™€ C++๊ณผ ๋น„์Šทํ•œ ์ˆ˜์ค€์˜ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ๋„, ๊ทธ ์–ธ์–ด๋“ค์—์„œ ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํŒจํ„ด ๋งค์นญ์ด๋‚˜, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์ข…์†์„ฑ ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ํ˜„๋Œ€์ ์ธ ์–ธ์–ด์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค." #: src/why-rust.md:19 msgid "" @@ -2020,10 +1967,7 @@ msgid "" " as in those languages, plus a similar high-level language feeling. In addition\n" " you get fast and predictable performance like C and C++ (no garbage collector)\n" " as well as access to low-level hardware (should you need it)" -msgstr "" -"* Java, Go, Python, JaveScript: ์ด ์–ธ์–ด๋“ค๊ณผ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ •์„ฑ๊ณผ ํ•จ๊ป˜, 'ํ•˜์ด๋ ˆ๋ฒจ'์–ธ์–ด์˜ ๋Š๋‚Œ์„ ๋Š" -"๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋”ํ•ด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์—†๋Š” C/C++์™€ ์œ ์‚ฌํ•œ ์ˆ˜์ค€์˜ ๋น ๋ฅด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ " -"๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ €์ˆ˜์ค€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "* Java, Go, Python, JaveScript: ์ด ์–ธ์–ด๋“ค๊ณผ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ •์„ฑ๊ณผ ํ•จ๊ป˜, 'ํ•˜์ด๋ ˆ๋ฒจ'์–ธ์–ด์˜ ๋Š๋‚Œ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋”ํ•ด, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์—†๋Š” C/C++์™€ ์œ ์‚ฌํ•œ ์ˆ˜์ค€์˜ ๋น ๋ฅด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ €์ˆ˜์ค€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/why-rust/compile-time.md:1 msgid "# Compile Time Guarantees" @@ -2070,10 +2014,8 @@ msgid "" "* In fact, some will consider infinitely populating a collection a memory\n" " leak and Rust does not protect from those." msgstr "" -"* [`Box::leak`]์„ ์ด์šฉํ•˜์—ฌ ํฌ์ธํ„ฐ๋ฅผ ์˜๋„์ ์œผ๋กœ ๋ˆ„์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋Ÿฐํƒ€์ž„์ด ์ƒ์„ฑ" -"ํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์ด ํฌ๊ธฐ๋ฅผ ์ •ํ•œ ์ •์  ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* [`std::mem::forget`]์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ’์— ๋Œ€ํ•ด \"์žŠ๋„๋ก\" ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์†Œ๋ฉธ์ž๊ฐ€ ์‹คํ–‰๋˜" -"์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค).\n" +"* [`Box::leak`]์„ ์ด์šฉํ•˜์—ฌ ํฌ์ธํ„ฐ๋ฅผ ์˜๋„์ ์œผ๋กœ ๋ˆ„์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด์„œ ๋Ÿฐํƒ€์ž„์ด ์ƒ์„ฑํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์ด ํฌ๊ธฐ๋ฅผ ์ •ํ•œ ์ •์  ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* [`std::mem::forget`]์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ’์— ๋Œ€ํ•ด \"์žŠ๋„๋ก\" ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์†Œ๋ฉธ์ž๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค).\n" "* `Rc` ๋˜๋Š” `Arc`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ˆ˜๋กœ [์ˆœํ™˜์ฐธ์กฐ][reference cycle]์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์ปฌ๋ ‰์…˜์„ ๋ฌดํ•œ์ • ์ฑ„์šฐ๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ถœ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋Ÿฌ์ŠคํŠธ๋Š” ์ด๋ฅผ ๋ณดํ˜ธํ•˜์ง„ ๋ชปํ•ฉ๋‹ˆ๋‹ค." @@ -2112,10 +2054,7 @@ msgid "" " either a panic (a controlled crash of the program) or wrap-around\n" " semantics. By default, you get panics in debug mode (`cargo build`)\n" " and wrap-around in release mode (`cargo build --release`)." -msgstr "" -"* ์ •์ˆ˜ํ˜• ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ํ”Œ๋ ˆ๊ทธ๋ฅผ ํ†ตํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์€ ํŒจ๋‹‰(ํ”„๋กœ๊ทธ๋žจ ํฌ๋ ˆ์‹œ) ํ˜น์€ ์˜ฌ๋ฆผ" -"(wrap-around)์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ(`cargo build`)์—์„œ๋Š” ํŒจ๋‹‰์ด, ๋ฆด๋ฆฌ์ฆˆ ๋ชจ๋“œ(`cargo build " -"--release`)์—์„œ๋Š” wrap-around๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค." +msgstr "* ์ •์ˆ˜ํ˜• ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ํ”Œ๋ ˆ๊ทธ๋ฅผ ํ†ตํ•ด ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์€ ํŒจ๋‹‰(ํ”„๋กœ๊ทธ๋žจ ํฌ๋ ˆ์‹œ) ํ˜น์€ ์˜ฌ๋ฆผ(wrap-around)์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ(`cargo build`)์—์„œ๋Š” ํŒจ๋‹‰์ด, ๋ฆด๋ฆฌ์ฆˆ ๋ชจ๋“œ(`cargo build --release`)์—์„œ๋Š” wrap-around๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค." #: src/why-rust/runtime.md:17 msgid "" @@ -2123,10 +2062,7 @@ msgid "" " not be disabled directly with the `unsafe` keyword. However,\n" " `unsafe` allows you to call functions such as `slice::get_unchecked`\n" " which does not do bounds checking." -msgstr "" -"* ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๊ณ„์ฒดํฌ๋ฅผ ๋ฌด๋ ฅํ™” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. `unsafe`๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ" -"๋‹ค. ํ•˜์ง€๋งŒ `unsafe`์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ `slice::get_unchecked`๊ฐ™์€ ํ•จ์ˆ˜๋Š” ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ" -"๋‹ค." +msgstr "* ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๊ณ„์ฒดํฌ๋ฅผ ๋ฌด๋ ฅํ™” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. `unsafe`๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ `unsafe`์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ `slice::get_unchecked`๊ฐ™์€ ํ•จ์ˆ˜๋Š” ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/why-rust/modern.md:1 msgid "# Modern Features" @@ -2176,19 +2112,15 @@ msgid "" " writing a loop using `for` should result in roughly the same low level\n" " instructions as using the `.iter().fold()` construct." msgstr "" -"* C++ ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ œ๋กœ ์ฝ”์ŠคํŠธ ์ถ”์ƒํ™”๋Š” CPU๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์œ„๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ " -"'๋น„์šฉ'์„ ์ง€๋ถˆํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. \n" -"์˜ˆ๋ฅผ ๋“ค์–ด `for` ๋ฃจํ”„์™€์™€ `iter().fold()` ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ช…๋ น์–ด๊ฐ€ ์ƒ์„ฑ" -"๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค." +"* C++ ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ œ๋กœ ์ฝ”์ŠคํŠธ ์ถ”์ƒํ™”๋Š” CPU๋‚˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์œ„๋ ˆ๋ฒจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ '๋น„์šฉ'์„ ์ง€๋ถˆํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. \n" +"์˜ˆ๋ฅผ ๋“ค์–ด `for` ๋ฃจํ”„์™€์™€ `iter().fold()` ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•œ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋ช…๋ น์–ด๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค." #: src/why-rust/modern.md:28 msgid "" "* 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" " `Option` and `Result`." -msgstr "" -"* ๋Ÿฌ์ŠคํŠธ์˜ ์—ด๊ฑฐํ˜•(enum)์€ ํ•ฉ๊ณ„ ํƒ€์ž…(`sum types`)์œผ๋กœ ์•Œ๋ ค์ง„ ๋Œ€์ˆ˜ํ•™์  ๋ฐ์ดํ„ฐํ˜•('Algebraic Data " -"Types')์œผ๋กœ, ํƒ€์ž… ์‹œ์Šคํ…œ์ด `Option`์™€ `Result`๋“ฑ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค." +msgstr "* ๋Ÿฌ์ŠคํŠธ์˜ ์—ด๊ฑฐํ˜•(enum)์€ ํ•ฉ๊ณ„ ํƒ€์ž…(`sum types`)์œผ๋กœ ์•Œ๋ ค์ง„ ๋Œ€์ˆ˜ํ•™์  ๋ฐ์ดํ„ฐํ˜•('Algebraic Data Types')์œผ๋กœ, ํƒ€์ž… ์‹œ์Šคํ…œ์ด `Option`์™€ `Result`๋“ฑ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค." #: src/why-rust/modern.md:32 msgid "" @@ -2197,10 +2129,8 @@ msgid "" " talkative than other compilers. It will often provide you with _actionable_\n" " feedback, ready to copy-paste into your code." msgstr "" -"* ์˜ค๋ฅ˜๋ฅผ ์ฝ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค --- ์˜ค๋žœ๊ธฐ๊ฐ„ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ปดํŒŒ์ผ๋Ÿฌ ์ถœ๋ ฅ์„ ๋ฌด์‹œํ•˜๋Š”๋ฐ ์ต์ˆ™ํ•ด์ ธ ์žˆ์Šต" -"๋‹ˆ๋‹ค.\n" -" ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ๋ณด๋‹ค ๋” ์ˆ˜๋‹ค์Šค๋Ÿฝ๊ณ , ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ์„ " -"์ œ๊ณตํ•˜๋Š”\n" +"* ์˜ค๋ฅ˜๋ฅผ ์ฝ์–ด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค --- ์˜ค๋žœ๊ธฐ๊ฐ„ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ปดํŒŒ์ผ๋Ÿฌ ์ถœ๋ ฅ์„ ๋ฌด์‹œํ•˜๋Š”๋ฐ ์ต์ˆ™ํ•ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +" ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ๋ณด๋‹ค ๋” ์ˆ˜๋‹ค์Šค๋Ÿฝ๊ณ , ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„์˜ ์ฝ”๋“œ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋Š”\n" " ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. " #: src/why-rust/modern.md:37 @@ -2208,9 +2138,7 @@ msgid "" "* The Rust standard library is small compared to languages like Java, Python,\n" " and Go. Rust does not come with several things you might consider standard and\n" " essential:" -msgstr "" -"* ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Java, Python์ด๋‚˜ Go์™€ ๊ฐ™์€ ์–ธ์–ด์— ๋น„ํ•ด์„œ ๊ทœ๋ชจ๊ฐ€ ์ž‘์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ํฌํ•จ๋˜" -"์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋Ÿฌ์ŠคํŠธ์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—†์Šต๋‹ˆ๋‹ค." +msgstr "* ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” Java, Python์ด๋‚˜ Go์™€ ๊ฐ™์€ ์–ธ์–ด์— ๋น„ํ•ด์„œ ๊ทœ๋ชจ๊ฐ€ ์ž‘์Šต๋‹ˆ๋‹ค. ๋‹น์—ฐํžˆ ํฌํ•จ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ๋Ÿฌ์ŠคํŠธ์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—†์Šต๋‹ˆ๋‹ค." #: src/why-rust/modern.md:41 msgid "" @@ -2229,10 +2157,8 @@ msgid "" " community is still working on finding the best solution --- and perhaps there\n" " isn't a single \"best solution\" for some of these things." msgstr "" -" ๊ทธ ์ด์œ ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•œ ๋ฒˆ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด ๋บ„ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋งค์šฐ ์•ˆ์ •์ ์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ" -"๋ฌธ์ž…๋‹ˆ๋‹ค.\n" -" ์œ„์— ์–ธ๊ธ‰ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ์•„์ง ๋Ÿฌ์ŠคํŠธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— " -"ํฌํ•จ๋˜์ง€\n" +" ๊ทธ ์ด์œ ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•œ ๋ฒˆ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด ๋บ„ ์ˆ˜ ์—†์œผ๋ฉฐ, ๋งค์šฐ ์•ˆ์ •์ ์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +" ์œ„์— ์–ธ๊ธ‰ํ•œ ๊ธฐ๋Šฅ๋“ค์€ ์•„์ง ๋Ÿฌ์ŠคํŠธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์„ ์ฐพ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จ๋˜์ง€\n" " ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ด๋“ค ์ค‘ ๋ช‡ ๊ฐœ๋Š” '์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜'์ด ์•„์˜ˆ ์กด์žฌํ•  ์ˆ˜ ์—†์„ ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค." #: src/why-rust/modern.md:50 @@ -2241,8 +2167,7 @@ msgid "" " it trivial to download and compile third-party crates. A consequence of this\n" " is that the standard library can be smaller." msgstr "" -" ๋Ÿฌ์ŠคํŠธ๋Š” ์นด๊ณ ๋ผ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ , ์„œ๋“œํŒŒํ‹ฐ ํฌ๋ ˆ์ดํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ, ์ปดํŒŒ์ผ ํ•˜๊ธฐ ๋งค์šฐ " -"์‰ฝ์Šต๋‹ˆ๋‹ค.\n" +" ๋Ÿฌ์ŠคํŠธ๋Š” ์นด๊ณ ๋ผ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ , ์„œ๋“œํŒŒํ‹ฐ ํฌ๋ ˆ์ดํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œ, ์ปดํŒŒ์ผ ํ•˜๊ธฐ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.\n" " ์ด ๋˜ํ•œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ž‘์€ ์ด์œ ์ž…๋‹ˆ๋‹ค." #: src/why-rust/modern.md:54 @@ -2298,23 +2223,15 @@ msgstr "# ์Šค์นผ๋ผ ํƒ€์ž…" #: src/basic-syntax/scalar-types.md:3 msgid "" -"| | Types | " -"Literals |\n" +"| | Types | Literals |\n" "|------------------------|--------------------------------------------|-------------------------------|\n" -"| Signed integers | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, " -"`123i64` |\n" -"| Unsigned integers | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, " -"`10u16` |\n" -"| Floating point numbers | `f32`, `f64` | `3.14`, `-10.0e20`, " -"`2f32` |\n" -"| Strings | `&str` | `\"foo\"`, `r#\"\\\\" -"\"#` |\n" -"| Unicode scalar values | `char` | `'a'`, `'ฮฑ'`, " -"`'โˆž'` |\n" -"| Byte strings | `&[u8]` | `b\"abc\"`, `br#\" \" " -"\"#` |\n" -"| Booleans | `bool` | `true`, " -"`false` |" +"| Signed integers | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, `123i64` |\n" +"| Unsigned integers | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, `10u16` |\n" +"| Floating point numbers | `f32`, `f64` | `3.14`, `-10.0e20`, `2f32` |\n" +"| Strings | `&str` | `\"foo\"`, `r#\"\\\\\"#` |\n" +"| Unicode scalar values | `char` | `'a'`, `'ฮฑ'`, `'โˆž'` |\n" +"| Byte strings | `&[u8]` | `b\"abc\"`, `br#\" \" \"#` |\n" +"| Booleans | `bool` | `true`, `false` |" msgstr "" "| | ํƒ€์ž… | ์Šค์นผ๋ผ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’ |\n" "|-----------------|--------------------------------------------|-------------------------------|\n" @@ -2362,10 +2279,8 @@ msgstr "" #: src/basic-syntax/compound-types.md:8 msgid "Array assignment and access:" msgstr "" -"* _์—ญ์ฃผ: js๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด ํŠœํ”Œ์€ โ€˜์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•ด์„œ ์‚ฌ์ด์ฆˆ N์œผ๋กœ ๊ณ ์ •๋œ ๋ถˆ๋ณ€(immutable) ๋ฐฐ์—ดโ€™ ์ด" -"๋ผ๊ณ  ๋ณด๋ฉด ๋จ._\n" -" _์ •ํ™•ํžˆ๋Š” ์„œ์ˆ˜(์ˆœ์„œ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ)์˜ ๋ฌถ์Œ(๋ชจ์Œ). ๊ฐฏ์ˆ˜N๊ฐœ์— ๋Œ€ํ•ด์„œ N-tuple์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ 2-" -"tuple์„ ํ”ํžˆ ์“ฐ๊ธด ํ•จ.(cf. ์—ด๊ฑฐํ˜•)_\n" +"* _์—ญ์ฃผ: js๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๋ฉด ํŠœํ”Œ์€ โ€˜์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•ด์„œ ์‚ฌ์ด์ฆˆ N์œผ๋กœ ๊ณ ์ •๋œ ๋ถˆ๋ณ€(immutable) ๋ฐฐ์—ดโ€™ ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋จ._\n" +" _์ •ํ™•ํžˆ๋Š” ์„œ์ˆ˜(์ˆœ์„œ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ)์˜ ๋ฌถ์Œ(๋ชจ์Œ). ๊ฐฏ์ˆ˜N๊ฐœ์— ๋Œ€ํ•ด์„œ N-tuple์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ 2-tuple์„ ํ”ํžˆ ์“ฐ๊ธด ํ•จ.(cf. ์—ด๊ฑฐํ˜•)_\n" "\n" "๋ฐฐ์—ด ์„ ์–ธ๊ณผ ์ ‘๊ทผ:" @@ -2404,9 +2319,7 @@ msgid "" "* Arrays have elements of the same type, `T`, and length, `N`, which is a compile-time constant.\n" " Note that the length of the array is *part of its type*, which means that `[u8; 3]` and\n" " `[u8; 4]` are considered two different types." -msgstr "" -"* ๋ฐฐ์—ด์€, ๊ฐ™์€ ํƒ€์ž… `T`์˜ ๊ฐ’์ด `N`๊ฐœ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ `N`์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ" -"๋‹ค. ์ด ๊ธธ์ด๋„ ํƒ€์ž…์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, `[u8; 3]`์™€ `[u8; 4]`์€ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค." +msgstr "* ๋ฐฐ์—ด์€, ๊ฐ™์€ ํƒ€์ž… `T`์˜ ๊ฐ’์ด `N`๊ฐœ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ `N`์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ฒฐ์ •๋œ ๊ฐ’์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธธ์ด๋„ ํƒ€์ž…์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, `[u8; 3]`์™€ `[u8; 4]`์€ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค." #: src/basic-syntax/compound-types.md:38 msgid "* We can use literals to assign values to arrays." @@ -2418,10 +2331,7 @@ msgid "" " parameter: `{}` gives the default output, `{:?}` gives the debug output. We\n" " could also have used `{a}` and `{a:?}` without specifying the value after the\n" " format string." -msgstr "" -"* ํฌ๋งคํŒ… ๋ฌธ์ž์—ด์—์„œ `?`๋Š” ๋””๋ฒ„๊น… ์ถœ๋ ฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. `{}`๋Š” ๊ธฐ๋ณธ ์ถœ๋ ฅ์ด๋ฉฐ, `{:?}`๋Š” ๋””๋ฒ„๊น… ์ถœ๋ ฅ์ž…๋‹ˆ" -"๋‹ค. `{a}`์™€ `{a:?}`์™€ ๊ฐ™์ด ์ถœ๋ ฅํ•  ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํฌ๋งคํŒ… ๋ฌธ์ž์—ด์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ธ์ž " -"`a`๋Š” ๋ณ„๋„์˜ ์ธ์ž๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." +msgstr "* ํฌ๋งคํŒ… ๋ฌธ์ž์—ด์—์„œ `?`๋Š” ๋””๋ฒ„๊น… ์ถœ๋ ฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. `{}`๋Š” ๊ธฐ๋ณธ ์ถœ๋ ฅ์ด๋ฉฐ, `{:?}`๋Š” ๋””๋ฒ„๊น… ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค. `{a}`์™€ `{a:?}`์™€ ๊ฐ™์ด ์ถœ๋ ฅํ•  ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํฌ๋งคํŒ… ๋ฌธ์ž์—ด์— ํฌํ•จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์ธ์ž `a`๋Š” ๋ณ„๋„์˜ ์ธ์ž๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/compound-types.md:45 msgid "* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be easier to read." @@ -2440,8 +2350,7 @@ msgid "* Tuples group together values of different types into a compound type." msgstr "* ํŠœํ”Œ์€ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’๋“ค์„ ํ•˜๋‚˜์˜ ๋ณตํ•ฉ ํƒ€์ž…์œผ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/compound-types.md:53 -msgid "" -"* Fields of a tuple can be accessed by the period and the index of the value, e.g. `t.0`, `t.1`." +msgid "* Fields of a tuple can be accessed by the period and the index of the value, e.g. `t.0`, `t.1`." msgstr "* ํŠœํ”Œ์— ์†ํ•œ ๊ฐ’์€ `t.0`, `t.1`๊ณผ ๊ฐ™์ด ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/compound-types.md:55 @@ -2452,10 +2361,7 @@ msgid "" " expression has no return value, as we'll see in a future slide. \n" " * You can think of it as `void` that can be familiar to you from other \n" " programming languages." -msgstr "" -"* ๋น„์–ด์žˆ๋Š” ํŠœํ”Œ`()`์€ ๋‹จ์œ„ ํƒ€์ž…(unit type)์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํƒ€์ž…์ด๋ฉด์„œ ํ•ด๋‹น ํƒ€์ž…์˜ ์œ ์ผํ•˜๋ฉฐ ์œ " -"ํšจํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ฆ‰ ํƒ€์ž…๊ณผ ๊ฐ’์ด ๋ชจ๋‘ `()`์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•จ์ˆ˜๋‚˜ ์‹์—์„œ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ " -"์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. * ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ต์ˆ™ํ•œ `void` ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "* ๋น„์–ด์žˆ๋Š” ํŠœํ”Œ`()`์€ ๋‹จ์œ„ ํƒ€์ž…(unit type)์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํƒ€์ž…์ด๋ฉด์„œ ํ•ด๋‹น ํƒ€์ž…์˜ ์œ ์ผํ•˜๋ฉฐ ์œ ํšจํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ฆ‰ ํƒ€์ž…๊ณผ ๊ฐ’์ด ๋ชจ๋‘ `()`์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ•จ์ˆ˜๋‚˜ ์‹์—์„œ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์Œ์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. * ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ์ต์ˆ™ํ•œ `void` ๊ฐœ๋…์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/references.md:1 msgid "# References" @@ -2488,10 +2394,8 @@ msgid "" " methods (try `ref_x.count_ones()`).\n" "* References that are declared as `mut` can be bound to different values over their lifetime." msgstr "" -"* `ref_x`์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ, C/C++์˜ ํฌ์ธํ„ฐ์™€ ์œ ์‚ฌํ•˜๊ฒŒ `*`๋ฅผ ์ด์šฉํ•ด์„œ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผ(์—ญ์ฐธ์กฐ) ํ•ฉ๋‹ˆ" -"๋‹ค.\n" -"* ๋Ÿฌ์ŠคํŠธ๋Š” ํŠน์ •ํ•œ ๊ฒฝ์šฐ(๋ฉ”์„œ๋“œ ํ˜ธ์ถœ)์— ์ž๋™์œผ๋กœ ์—ญ์ฐธ์กฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.(`ref_x.count_one()`์„ ํ•˜๋ฉด `*ref_x`" -"๊ฐ€ `count_one`์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.)\n" +"* `ref_x`์— ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ, C/C++์˜ ํฌ์ธํ„ฐ์™€ ์œ ์‚ฌํ•˜๊ฒŒ `*`๋ฅผ ์ด์šฉํ•ด์„œ ์ฐธ์กฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผ(์—ญ์ฐธ์กฐ) ํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋Ÿฌ์ŠคํŠธ๋Š” ํŠน์ •ํ•œ ๊ฒฝ์šฐ(๋ฉ”์„œ๋“œ ํ˜ธ์ถœ)์— ์ž๋™์œผ๋กœ ์—ญ์ฐธ์กฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.(`ref_x.count_one()`์„ ํ•˜๋ฉด `*ref_x`๊ฐ€ `count_one`์˜ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.)\n" "* `mut`๋กœ ์„ ์–ธ๋œ ์ฐธ์กฐ๋Š” ๊ทธ ๋ณ€์ˆ˜๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/references.md:21 @@ -2580,19 +2484,16 @@ msgstr "" "* ์งˆ๋ฌธ: `a[3]`์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋‚ ๊นŒ์š”?" #: src/basic-syntax/slices.md:20 -msgid "" -"* We create a slice by borrowing `a` and specifying the starting and ending indexes in brackets." +msgid "* We create a slice by borrowing `a` and specifying the starting and ending indexes in brackets." msgstr "* ์Šฌ๋ผ์ด์Šค๋Š” ์šฐ์„  `a`๋ฅผ ๋นŒ๋ฆฐ๋‹ค์Œ, ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ๋ธŒ๋ž˜ํ‚ท(`[]`)์•ˆ์— ์ง€์ •ํ•ด์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค." #: src/basic-syntax/slices.md:22 msgid "" -"* If the slice starts at index 0, Rustโ€™s range syntax allows us to drop the starting index, " -"meaning that `&a[0..a.len()]` and `&a[..a.len()]` are identical.\n" +"* If the slice starts at index 0, Rustโ€™s range syntax allows us to drop the starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are identical.\n" " \n" "* The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are identical." msgstr "" -"* ์Šฌ๋ผ์ด์Šค๊ฐ€ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ์‹œ์ž‘ ์ธ๋ฑ์Šค๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ `&a[0..a.len()]`์™€ `&a[..a." -"len()]` ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์Šฌ๋ผ์ด์Šค๊ฐ€ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ์‹œ์ž‘ ์ธ๋ฑ์Šค๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ `&a[0..a.len()]`์™€ `&a[..a.len()]` ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.\n" "* ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋„ ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ `&a[2..a.len()]` ์™€ `&a[2..]`๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค." #: src/basic-syntax/slices.md:26 @@ -2601,27 +2502,19 @@ msgstr "* ๋”ฐ๋ผ์„œ ์ „์ฒด ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์Šฌ๋ผ์ด์Šค๋Š” `&a[..]`๊ฐ€ ๋ฉ๋‹ˆ #: src/basic-syntax/slices.md:28 msgid "" -"* `s` is a reference to a slice of `i32`s. Notice that the type of `s` (`&[i32]`) no longer " -"mentions the array length. This allows us to perform computation on slices of different sizes.\n" +"* `s` is a reference to a slice of `i32`s. Notice that the type of `s` (`&[i32]`) no longer mentions the array length. This allows us to perform computation on slices of different sizes.\n" " \n" -"* Slices always borrow from another object. In this example, `a` has to remain 'alive' (in scope) " -"for at least as long as our slice. \n" +"* Slices always borrow from another object. In this example, `a` has to remain 'alive' (in scope) for at least as long as our slice. \n" " \n" -"* The question about modifying `a[3]` can spark an interesting discussion, but the answer is that " -"for memory safety reasons\n" -" you cannot do it through `a` after you created a slice, but you can read the data from both `a` " -"and `s` safely. \n" +"* The question about modifying `a[3]` can spark an interesting discussion, but the answer is that for memory safety reasons\n" +" you cannot do it through `a` after you created a slice, but you can read the data from both `a` and `s` safely. \n" " More details will be explained in the borrow checker section." msgstr "" -"* `s`๋Š” `i32`๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์Šฌ๋ผ์ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. `s`์˜ ํƒ€์ž…(`&[i32]`)์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋น ์ ธ์žˆ" -"์Œ์— ์ฃผ๋ชฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ฆ‰, ์Šฌ๋ผ์ด์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* `s`๋Š” `i32`๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์Šฌ๋ผ์ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. `s`์˜ ํƒ€์ž…(`&[i32]`)์— ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋น ์ ธ์žˆ์Œ์— ์ฃผ๋ชฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ฆ‰, ์Šฌ๋ผ์ด์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " \n" -"* ์Šฌ๋ผ์ด์Šค๋Š” ํ•ญ์ƒ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ '๋นŒ๋ ค' ์˜ต๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ ๊ฐ์ฒด `a`๋Š” ์Šฌ๋ผ์ด์Šค `s`๋ณด๋‹ค ๋” ์˜ค๋ž˜ " -"์‚ด์•„ ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์Šฌ๋ผ์ด์Šค๋Š” ํ•ญ์ƒ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ '๋นŒ๋ ค' ์˜ต๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ ๊ฐ์ฒด `a`๋Š” ์Šฌ๋ผ์ด์Šค `s`๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์‚ด์•„ ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.\n" " \n" -"* `a[3]`์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋ƒ๋Š” ์งˆ๋ฌธ์€ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋Œ€ํ•œ ๋‹ต์€ `a`์™€ `s`๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ " -"์ฝ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†์œผ๋ฉฐ, ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ ์œ„ํ•ด์„œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€์— ๋Œ€ํ•œ ์ข€๋” " -"๊ตฌ์ฒด์ ์ธ ๋‹ต์€ ๋นŒ๋ฆผ ๊ฒ€์‚ฌ ๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค." +"* `a[3]`์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋ƒ๋Š” ์งˆ๋ฌธ์€ ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋Œ€ํ•œ ๋‹ต์€ `a`์™€ `s`๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜๋Š” ์—†์œผ๋ฉฐ, ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ ์œ„ํ•ด์„œ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿฐ์ง€์— ๋Œ€ํ•œ ์ข€๋” ๊ตฌ์ฒด์ ์ธ ๋‹ต์€ ๋นŒ๋ฆผ ๊ฒ€์‚ฌ ๋ถ€๋ถ„์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค." #: src/basic-syntax/string-slices.md:1 msgid "# `String` vs `str`" @@ -2669,21 +2562,17 @@ msgid "" "* `&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." msgstr "" -"* `&str`์€ ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์Šค์˜ ๋ถˆ๋ณ€ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ์—์„œ ๋ฌธ์ž์—ด์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ" -"๋‹ˆ๋‹ค.\n" +"* `&str`์€ ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์Šค์˜ ๋ถˆ๋ณ€ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ์—์„œ ๋ฌธ์ž์—ด์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" " ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด(`โ€Helloโ€`)์€ ํ”„๋กœ๊ทธ๋žจ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. " #: src/basic-syntax/string-slices.md:30 msgid "" "* Rustโ€™s `String` type is a wrapper around a vector of bytes. As with a `Vec`, it is owned.\n" " \n" -"* As with many other types `String::from()` creates a string from a string literal; `String::" -"new()` \n" -" creates a new empty string, to which string data can be added using the `push()` and " -"`push_str()` methods." +"* As with many other types `String::from()` creates a string from a string literal; `String::new()` \n" +" creates a new empty string, to which string data can be added using the `push()` and `push_str()` methods." msgstr "" -"* ๋Ÿฌ์ŠคํŠธ์˜ `String`ํƒ€์ž…์€ ์‹ค์ œ๋กœ๋Š” ๋ฌธ์ž์—ด์„ ์ด๋ฃจ๋Š” ๋ฐ”์ดํŠธ์— ๋Œ€ํ•œ ๋ฐฑํ„ฐ(`Vec`)์ž…๋‹ˆ๋‹ค. `Vec`๊ฐ€ " -"`T`๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋“ฏ์ด, `String`์ด ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด์€ `String`์˜ ์†Œ์œ ์ž…๋‹ˆ๋‹ค.\n" +"* ๋Ÿฌ์ŠคํŠธ์˜ `String`ํƒ€์ž…์€ ์‹ค์ œ๋กœ๋Š” ๋ฌธ์ž์—ด์„ ์ด๋ฃจ๋Š” ๋ฐ”์ดํŠธ์— ๋Œ€ํ•œ ๋ฐฑํ„ฐ(`Vec`)์ž…๋‹ˆ๋‹ค. `Vec`๊ฐ€ `T`๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋“ฏ์ด, `String`์ด ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด์€ `String`์˜ ์†Œ์œ ์ž…๋‹ˆ๋‹ค.\n" "* ๋‹ค๋ฅธ ๋งŽ์€ ํƒ€์ž…๋“ค์ฒ˜๋Ÿผ `String::from`๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.\n" " * `String::new()`๋Š” ์ƒˆ๋กœ์šด ๋นˆ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. \n" " * `push()`์™€ `push_str()`๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." @@ -2697,18 +2586,15 @@ msgid "" " \n" "* For C++ programmers: think of `&str` as `const char*` from C++, but the one that always points \n" " to a valid string in memory. Rust `String` is a rough equivalent of `std::string` from C++ \n" -" (main difference: it can only contain UTF-8 encoded bytes and will never use a small-string " -"optimization).\n" +" (main difference: it can only contain UTF-8 encoded bytes and will never use a small-string optimization).\n" " \n" "" msgstr "" "* `format!()` ๋งคํฌ๋กœ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.\n" " ์ด ๋งคํฌ๋กœ๋Š” `println!()` ๋งคํฌ๋กœ์™€ ๋™์ผํ•œ ํฌ๋งทํŒ… ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.\n" "* `&`์™€ ๋ฒ”์œ„ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ `String`์—์„œ `&str`์Šฌ๋ผ์ด์Šค๋ฅผ ๋นŒ๋ ค์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* ๋‹น์‹ ์ด C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋ผ๋ฉด: `&str`๋Š” C++์˜ `const char*`์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ ์œ ํšจํ•œ ๋ฌธ์ž์—ด์„ ๊ฐ€๋ฆฌํ‚จ" -"๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ์˜ `String`์€ C++์˜ `std::string` ๊ณผ ๋Œ€๋žต ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.\n" -" (์ฃผ์š” ์ฐจ์ด์ : ๋Ÿฌ์ŠคํŠธ์˜ `String`์€ UTF-8 ์ธ์ฝ”๋”ฉ ๋ฐ”์ดํŠธ๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์€ ๋ฌธ์ž์—ด ์ตœ์ ํ™”" -"(small-string optimization)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" +"* ๋‹น์‹ ์ด C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋ผ๋ฉด: `&str`๋Š” C++์˜ `const char*`์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํ•ญ์ƒ ์œ ํšจํ•œ ๋ฌธ์ž์—ด์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ์˜ `String`์€ C++์˜ `std::string` ๊ณผ ๋Œ€๋žต ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.\n" +" (์ฃผ์š” ์ฐจ์ด์ : ๋Ÿฌ์ŠคํŠธ์˜ `String`์€ UTF-8 ์ธ์ฝ”๋”ฉ ๋ฐ”์ดํŠธ๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์€ ๋ฌธ์ž์—ด ์ตœ์ ํ™”(small-string optimization)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" " \n" "" @@ -2717,17 +2603,13 @@ msgid "# Functions" msgstr "# ํ•จ์ˆ˜" #: src/basic-syntax/functions.md:3 -msgid "" -"A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/Fizz_buzz) interview " -"question:" +msgid "A Rust version of the famous [FizzBuzz](https://en.wikipedia.org/wiki/Fizz_buzz) interview question:" msgstr "" "๋Ÿฌ์ŠคํŠธ ๋ฒ„์ „์˜ [FizzBuzz](https://en.wikipedia.org/wiki/Fizz_buzz) ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค: \n" "* _์—ญ์ฃผ_\n" -" * _corner case: ๋ณตํ•ฉ ๊ฒฝ๊ณ„ ์กฐ๊ฑด. ๋ณ€์ˆ˜์™€ ํ™˜๊ฒฝ์ ์ธ ์š”์†Œ๋กœ ์ธํ•ด์„œ ๋กœ์ง์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ.(๋‚˜๋ˆ„๊ธฐ ๋กœ" -"์ง์—์„œ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ.)_\n" +" * _corner case: ๋ณตํ•ฉ ๊ฒฝ๊ณ„ ์กฐ๊ฑด. ๋ณ€์ˆ˜์™€ ํ™˜๊ฒฝ์ ์ธ ์š”์†Œ๋กœ ์ธํ•ด์„œ ๋กœ์ง์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ.(๋‚˜๋ˆ„๊ธฐ ๋กœ์ง์—์„œ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ.)_\n" " * _edge case: ๊ฒฝ๊ณ„์กฐ๊ฑด. ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ๊ทน๋‹จ์ ์ธ ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’ (๋กœ์ง ์œ ํšจ๋ฒ”์œ„ ๋) ์ด์ƒ์ธ ๊ฒฝ์šฐ._\n" -" * _fizzbuzz: ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ 3์œผ๋กœ ๋‚˜๋‰˜๋ฉด fizz, 5์œผ๋กœ ๋‚˜๋‰˜๋ฉด buss, ๋‘˜๋‹ค ๋‚˜๋‰˜๋ฉด fizzbuzz, ์•ˆ๋‚˜" -"๋‰˜๋ฉด ์ž…๋ ฅ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ…Œ์ŠคํŠธ๋กœ ์ž์ฃผ ์“ฐ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค._" +" * _fizzbuzz: ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„์„œ 3์œผ๋กœ ๋‚˜๋‰˜๋ฉด fizz, 5์œผ๋กœ ๋‚˜๋‰˜๋ฉด buss, ๋‘˜๋‹ค ๋‚˜๋‰˜๋ฉด fizzbuzz, ์•ˆ๋‚˜๋‰˜๋ฉด ์ž…๋ ฅ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ…Œ์ŠคํŠธ๋กœ ์ž์ฃผ ์“ฐ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค._" #: src/basic-syntax/functions.md:5 msgid "" @@ -2795,30 +2677,18 @@ msgstr "" #: src/basic-syntax/functions.md:35 msgid "" -"* We refer in `main` to a function written below. Neither forward declarations nor headers are " -"necessary. \n" -"* Declaration parameters are followed by a type (the reverse of some programming languages), then " -"a return type.\n" -"* The last expression in a function body (or any block) becomes the return value. Simply omit the " -"`;` at the end of the expression.\n" -"* Some functions have no return value, and return the 'unit type', `()`. The compiler will infer " -"this if the `-> ()` return type is omitted.\n" -"* The range expression in the `for` loop in `fizzbuzz_to()` contains `=n`, which causes it to " -"include the upper bound.\n" -"* The `match` expression in `fizzbuzz()` is doing a lot of work. It is expanded below to show what " -"is happening." +"* We refer in `main` to a function written below. Neither forward declarations nor headers are necessary. \n" +"* Declaration parameters are followed by a type (the reverse of some programming languages), then a return type.\n" +"* The last expression in a function body (or any block) becomes the return value. Simply omit the `;` at the end of the expression.\n" +"* Some functions have no return value, and return the 'unit type', `()`. The compiler will infer this if the `-> ()` return type is omitted.\n" +"* The range expression in the `for` loop in `fizzbuzz_to()` contains `=n`, which causes it to include the upper bound.\n" +"* The `match` expression in `fizzbuzz()` is doing a lot of work. It is expanded below to show what is happening." msgstr "" -"* `main` ํ•จ์ˆ˜์—์„œ ๊ทธ ๋‹ค์Œ์— ์˜ค๋Š” ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋‹จ์— ์„ ์–ธ์ด๋‚˜ ํ—ค๋” ๊ฐ™์€๊ฑด ํ•„์š” ์—†์Šต" -"๋‹ˆ๋‹ค.\n" -"* ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋Š” ์ด๋ฆ„์„ ๋จผ์ € ์“ฐ๊ณ , ํƒ€์ž…์„ ๋‚˜์ค‘์— ์”๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ ํƒ€์ž…์€ `:` ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ" -"๋‹ค. ์ด๋Š” ์ผ๋ถ€ ์–ธ์–ด(์˜ˆ๋ฅผ ๋“ค์–ด C)์™€ ๋ฐ˜๋Œ€์ž„์— ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฆฌํ„ด ํƒ€์ž…๋„ ํ•จ์ˆ˜์˜ ์‹œ์ž‘" -"์ด ์•„๋‹Œ ๊ฐ€์žฅ ๋’ท๋ถ€๋ถ„์— ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.\n" +"* `main` ํ•จ์ˆ˜์—์„œ ๊ทธ ๋‹ค์Œ์— ์˜ค๋Š” ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋‹จ์— ์„ ์–ธ์ด๋‚˜ ํ—ค๋” ๊ฐ™์€๊ฑด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.\n" +"* ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋Š” ์ด๋ฆ„์„ ๋จผ์ € ์“ฐ๊ณ , ํƒ€์ž…์„ ๋‚˜์ค‘์— ์”๋‹ˆ๋‹ค. ์ด๋ฆ„๊ณผ ํƒ€์ž…์€ `:` ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ถ€ ์–ธ์–ด(์˜ˆ๋ฅผ ๋“ค์–ด C)์™€ ๋ฐ˜๋Œ€์ž„์— ์œ ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฆฌํ„ด ํƒ€์ž…๋„ ํ•จ์ˆ˜์˜ ์‹œ์ž‘์ด ์•„๋‹Œ ๊ฐ€์žฅ ๋’ท๋ถ€๋ถ„์— ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.\n" "* ํ•จ์ˆ˜ ๋ณธ๋ฌธ์˜ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์€ ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ, ์‹ ๋์— ์žˆ๋Š” `;`๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.\n" -"* ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, `์œ ๋‹› ํƒ€์ž… ()`์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. `-> ()`๊ฐ€ ์ƒ๋žต๋œ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์ถ”" -"๋ก ํ•ฉ๋‹ˆ๋‹ค.* `fizzbuzz_to()`ํ•จ์ˆ˜ ๋‚ด `for` ๋ฐ˜๋ชฉ๋ฌธ์˜ rage ํ‘œํ˜„์‹ ์ค‘ `=n`์€ ํ•ด๋‹น ๋ฒ”์œ„๊นŒ์ง€ ํฌํ•จํ•œ๋‹ค๋Š” ์˜" -"๋ฏธ์ž…๋‹ˆ๋‹ค. \n" -"* `fizzbuzz()`ํ•จ์ˆ˜์˜ `match` ํ‘œํ˜„์‹์€ ๋งŽ์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์กฐ๊ธˆ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„" -"๋ก ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +"* ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, `์œ ๋‹› ํƒ€์ž… ()`์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. `-> ()`๊ฐ€ ์ƒ๋žต๋œ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค.* `fizzbuzz_to()`ํ•จ์ˆ˜ ๋‚ด `for` ๋ฐ˜๋ชฉ๋ฌธ์˜ rage ํ‘œํ˜„์‹ ์ค‘ `=n`์€ ํ•ด๋‹น ๋ฒ”์œ„๊นŒ์ง€ ํฌํ•จํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. \n" +"* `fizzbuzz()`ํ•จ์ˆ˜์˜ `match` ํ‘œํ˜„์‹์€ ๋งŽ์€ ์ผ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์กฐ๊ธˆ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/basic-syntax/functions.md:42 msgid " (Type annotations added for clarity, but they can be elided.)" @@ -2940,9 +2810,7 @@ msgstr "" msgid "" "* When using generics, the standard library's `Into` can provide a kind of limited\n" " polymorphism on argument types. We will see more details in a later section." -msgstr "" -"* ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•  ๋•Œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ `Into`์€ ํƒ€์ž…์— ๋Œ€ํ•œ ๋‹คํ˜•์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— " -"์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." +msgstr "* ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•  ๋•Œ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ `Into`์€ ํƒ€์ž…์— ๋Œ€ํ•œ ๋‹คํ˜•์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/functions-interlude.md:30 msgid "" @@ -2973,9 +2841,7 @@ msgid "" "* Use a local Rust installation, if possible. This way you can get\n" " auto-completion in your editor. See the page about [Using Cargo] for details\n" " on installing Rust." -msgstr "" -"* ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋Ÿฌ์ŠคํŠธ๊ฐ€ ์„ค์น˜๋œ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋Š” ํŽธ์ด ํ…์ŠคํŠธ ์—๋””ํ„ฐ์˜ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์˜ " -"๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์Šต๋‹ˆ๋‹ค. [์นด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ][Using Cargo] ์„ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "* ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋Ÿฌ์ŠคํŠธ๊ฐ€ ์„ค์น˜๋œ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋Š” ํŽธ์ด ํ…์ŠคํŠธ ์—๋””ํ„ฐ์˜ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์Šต๋‹ˆ๋‹ค. [์นด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ][Using Cargo] ์„ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-1/morning.md:17 msgid "* Alternatively, use the Rust Playground." @@ -2985,9 +2851,7 @@ msgstr "* ํ˜น์€ ๋Ÿฌ์ŠคํŠธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. msgid "" "The code snippets are not editable on purpose: the inline code snippets lose\n" "their state if you navigate away from the page." -msgstr "" -"ํŽ˜์ด์ง€ ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด ์†Œ์‹ค๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณต๋˜๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ ์˜๋„์ ์œผ๋กœ ํŽธ์ง‘ํ•  " -"์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. " +msgstr "ํŽ˜์ด์ง€ ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด ์†Œ์‹ค๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณต๋˜๋Š” ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์€ ์˜๋„์ ์œผ๋กœ ํŽธ์ง‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. " #: src/exercises/day-1/morning.md:22 src/exercises/day-1/afternoon.md:11 #: src/exercises/day-2/morning.md:11 src/exercises/day-2/afternoon.md:7 @@ -3046,10 +2910,8 @@ msgid "" "Implementing these traits is how a type expresses that it can be converted into\n" "another type." msgstr "" -"๋Ÿฌ์ŠคํŠธ์˜ ์ •์ˆ˜ํ˜• ํƒ€์ž…์€ ๋ชจ๋‘ [`From`][1] ์™€ [`Into`][2] ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด " -"ํƒ€์ž… ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด ์ง‘๋‹ˆ๋‹ค.\n" -"`From` ํŠธ๋ ˆ์ดํŠธ๋Š” `from()` ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , `Into`ํŠธ๋ ˆ์ดํŠธ๋Š” `into()` ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ" -"์Šต๋‹ˆ๋‹ค.\n" +"๋Ÿฌ์ŠคํŠธ์˜ ์ •์ˆ˜ํ˜• ํƒ€์ž…์€ ๋ชจ๋‘ [`From`][1] ์™€ [`Into`][2] ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ํƒ€์ž… ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด ์ง‘๋‹ˆ๋‹ค.\n" +"`From` ํŠธ๋ ˆ์ดํŠธ๋Š” `from()` ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , `Into`ํŠธ๋ ˆ์ดํŠธ๋Š” `into()` ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.\n" "๋Ÿฌ์ŠคํŠธ์—์„œ๋Š” `From`๊ณผ `Into` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ, ํƒ€์ž… ๊ฐ„ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/exercises/day-1/implicit-conversions.md:25 @@ -3059,18 +2921,14 @@ msgid "" "`i16::from(x)`. Or, simpler, with `x.into()`, because `From for i16`\n" "implementation automatically create an implementation of `Into for i8`." msgstr "" -"ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” `From for i16`๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ `i8` ํƒ€์ž…์˜ ๋ณ€์ˆ˜ `x`๋ฅผ `i16::" -"from(x)`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ `i16`ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.\n" -"ํ˜น์€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ `x.into()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” `From for i16` ๊ตฌํ˜„์„ " -"๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด `Into for i8` ๊ตฌํ˜„์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." +"ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” `From for i16`๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ `i8` ํƒ€์ž…์˜ ๋ณ€์ˆ˜ `x`๋ฅผ `i16::from(x)`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ `i16`ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.\n" +"ํ˜น์€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ `x.into()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” `From for i16` ๊ตฌํ˜„์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด `Into for i8` ๊ตฌํ˜„์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-1/implicit-conversions.md:30 msgid "" "The same applies for your own `From` implementations for your own types, so it is\n" "sufficient to only implement `From` to get a respective `Into` implementation automatically." -msgstr "" -"์ด๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋˜๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ `From`๋งŒ์„ ๊ตฌํ˜„ํ•ด๋„ `Into`๊นŒ์ง€ ์ž๋™" -"์œผ๋กœ ๊ตฌํ˜„์ด ๋ฉ๋‹ˆ๋‹ค." +msgstr "์ด๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋˜๋Š” ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ `From`๋งŒ์„ ๊ตฌํ˜„ํ•ด๋„ `Into`๊นŒ์ง€ ์ž๋™์œผ๋กœ ๊ตฌํ˜„์ด ๋ฉ๋‹ˆ๋‹ค." #: src/exercises/day-1/implicit-conversions.md:33 msgid "1. Execute the above program and look at the compiler error." @@ -3161,9 +3019,7 @@ msgstr "" msgid "" "Use the above to write a function `pretty_print` which pretty-print a matrix and\n" "a function `transpose` which will transpose a matrix (turn rows into columns):" -msgstr "" -"์œ„ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ, ํ–‰๋ ฌ์„ ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅํ•˜๋Š” `pretty_print`ํ•จ์ˆ˜์™€, ํ–‰๋ ฌ์„ ์ „์น˜(ํ–‰๊ณผ ์—ด์„ ์„œ๋กœ ๋ฐ”๊พธ" -"๋Š”)์‹œํ‚ค๋Š” `transpose`ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "์œ„ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ, ํ–‰๋ ฌ์„ ์˜ˆ์˜๊ฒŒ ์ถœ๋ ฅํ•˜๋Š” `pretty_print`ํ•จ์ˆ˜์™€, ํ–‰๋ ฌ์„ ์ „์น˜(ํ–‰๊ณผ ์—ด์„ ์„œ๋กœ ๋ฐ”๊พธ๋Š”)์‹œํ‚ค๋Š” `transpose`ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-1/for-loops.md:41 msgid "" @@ -3219,7 +3075,8 @@ msgid "" " ];" msgstr "" -#: src/exercises/day-1/for-loops.md:71 src/exercises/day-1/solutions-morning.md:70 +#: src/exercises/day-1/for-loops.md:71 +#: src/exercises/day-1/solutions-morning.md:70 msgid "" " println!(\"matrix:\");\n" " pretty_print(&matrix);" @@ -3251,16 +3108,13 @@ msgstr "" msgid "" "See the [`ndarray` crate](https://docs.rs/ndarray/) for a production quality\n" "implementation." -msgstr "" -"์ƒ์šฉ ํ’ˆ์งˆ์˜ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” [`ndarray` ํฌ๋ ˆ์ดํŠธ](https://docs.rs/ndarray/)๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "์ƒ์šฉ ํ’ˆ์งˆ์˜ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” [`ndarray` ํฌ๋ ˆ์ดํŠธ](https://docs.rs/ndarray/)๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-1/for-loops.md:92 msgid "" "The solution and the answer to the bonus section are available in the \n" "[Solution](solutions-morning.md#arrays-and-for-loops) section." -msgstr "" -"๋ณด๋„ˆ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต๋ณ€ ์—ญ์‹œ [Solution](solutions-morning.md#arrays-and-for-loops)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ" -"์Šต๋‹ˆ๋‹ค." +msgstr "๋ณด๋„ˆ์Šค ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต๋ณ€ ์—ญ์‹œ [Solution](solutions-morning.md#arrays-and-for-loops)์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/variables.md:1 msgid "# Variables" @@ -3296,13 +3150,10 @@ msgstr "" #: src/basic-syntax/variables.md:17 msgid "" -"* Due to type inference the `i32` is optional. We will gradually show the types less and less as " -"the course progresses.\n" -"* Note that since `println!` is a macro, `x` is not moved, even using the function like syntax of " -"`println!(\"x: {}\", x)`" +"* Due to type inference the `i32` is optional. We will gradually show the types less and less as the course progresses.\n" +"* Note that since `println!` is a macro, `x` is not moved, even using the function like syntax of `println!(\"x: {}\", x)`" msgstr "" -"* ํƒ€์ž… ์ถ”๋ก ์— ๋•๋ถ„์— `i32`๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜๊ฐ€ ์ง„ํ–‰๋  ์ˆ˜๋ก ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์€ ์ ์  ์ƒ๋žตํ•  ๊ฒƒ" -"์ž…๋‹ˆ๋‹ค.\n" +"* ํƒ€์ž… ์ถ”๋ก ์— ๋•๋ถ„์— `i32`๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์˜๊ฐ€ ์ง„ํ–‰๋  ์ˆ˜๋ก ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์€ ์ ์  ์ƒ๋žตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" "* `println!(\"x: {}\", x)`๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์€ ๋งคํฌ๋กœ ํ˜ธ์ถœ์ด๋ฉฐ `x`๋Š” ์ด๋™๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/basic-syntax/type-inference.md:1 @@ -3346,30 +3197,20 @@ msgstr "" #: src/basic-syntax/type-inference.md:26 msgid "" -"This slide demonstrates how the Rust compiler infers types based on constraints given by variable " -"declarations and usages.\n" +"This slide demonstrates how the Rust compiler infers types based on constraints given by variable declarations and usages.\n" " \n" -"It is very important to emphasize that variables declared like this are not of some sort of " -"dynamic \"any type\" that can\n" -"hold any data. The machine code generated by such declaration is identical to the explicit " -"declaration of a type.\n" -"The compiler does the job for us and helps us to write a more concise code." +"It is very important to emphasize that variables declared like this are not of some sort of dynamic \"any type\" that can\n" +"hold any data. The machine code generated by such declaration is identical to the explicit declaration of a type.\n" +"The compiler does the job for us and helps us write more concise code." msgstr "" -"์ด ์Šฌ๋ผ์ด๋“œ๋Š”, ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์‚ผ" -"์•„์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.\n" +"์ด ์Šฌ๋ผ์ด๋“œ๋Š”, ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ ์–ธ๋˜์–ด ์žˆ๊ณ , ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€๋ฅผ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์‚ผ์•„์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ถ”๋ก ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.\n" " \n" -"์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€, ์ด๋ ‡๊ฒŒ ๋ช…์‹œ์ ์ธ ํƒ€์ž…์„ ์ƒ๋žตํ•˜๊ณ  ์„ ์–ธ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ \"์–ด๋–ค ํƒ€์ž…\"์ด๋ผ๋„ ๋‹ค ๋‹ด์„ " -"์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.\n" -"๋ช…์‹œ์ ์ธ ํƒ€์ž… ์„ ์–ธ์ด ์žˆ๋˜ ์—†๋˜, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ๋จธ์‹ ์ฝ”๋“œ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹จ์ง€ ํƒ€์ž… ์„ ์–ธ" -"์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ๋ฟ์ž…๋‹ˆ๋‹ค." +"์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€, ์ด๋ ‡๊ฒŒ ๋ช…์‹œ์ ์ธ ํƒ€์ž…์„ ์ƒ๋žตํ•˜๊ณ  ์„ ์–ธ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„œ \"์–ด๋–ค ํƒ€์ž…\"์ด๋ผ๋„ ๋‹ค ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค.\n" +"๋ช…์‹œ์ ์ธ ํƒ€์ž… ์„ ์–ธ์ด ์žˆ๋˜ ์—†๋˜, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ๋จธ์‹ ์ฝ”๋“œ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‹จ์ง€ ํƒ€์ž… ์„ ์–ธ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค„ ๋ฟ์ž…๋‹ˆ๋‹ค." #: src/basic-syntax/type-inference.md:32 -msgid "" -"The following code tells the compiler to copy into a certain generic container without the code " -"ever explicitly specifying the contained type, using `_` as a placeholder:" -msgstr "" -"์•„๋ž˜ ์ฝ”๋“œ๋Š”, ์ œ๋„ˆ๋ฆญ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์“ธ ๋•Œ ์ปจํ…Œ์ดํ„ฐ ์•ˆ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์“ฐ์ง€ ์•Š๊ณ  `_`" -"๋กœ ๋Œ€์ฒดํ•˜์—ฌ๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." +msgid "The following code tells the compiler to copy into a certain generic container without the code ever explicitly specifying the contained type, using `_` as a placeholder:" +msgstr "์•„๋ž˜ ์ฝ”๋“œ๋Š”, ์ œ๋„ˆ๋ฆญ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์“ธ ๋•Œ ์ปจํ…Œ์ดํ„ฐ ์•ˆ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ์“ฐ์ง€ ์•Š๊ณ  `_`๋กœ ๋Œ€์ฒดํ•˜์—ฌ๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." #: src/basic-syntax/type-inference.md:34 msgid "" @@ -3390,14 +3231,8 @@ msgid "" msgstr "" #: src/basic-syntax/type-inference.md:46 -msgid "" -"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) relies " -"on `FromIterator`, which [`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) " -"implements." -msgstr "" -"[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect)๋Š” " -"[`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html)์„ ๊ตฌํ˜„ํ•œ `FromIterator`์— " -"์˜์กดํ•ฉ๋‹ˆ๋‹ค." +msgid "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect) relies on `FromIterator`, which [`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html) implements." +msgstr "[`collect`](https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.collect)๋Š” [`HashSet`](https://doc.rust-lang.org/std/iter/trait.FromIterator.html)์„ ๊ตฌํ˜„ํ•œ `FromIterator`์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค." #: src/basic-syntax/static-and-const.md:1 msgid "# Static and Constant Variables" @@ -3469,14 +3304,8 @@ msgid "" msgstr "" #: src/basic-syntax/static-and-const.md:41 -msgid "" -"As noted in the [Rust RFC Book][1], these are not inlined upon use and have an actual associated " -"memory location. This is useful for unsafe and embedded code, and the variable lives through the " -"entirety of the program execution." -msgstr "" -"[Rust RFC Book][1]์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ์ •์  ๋ณ€์ˆ˜๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ์ธ๋ผ์ธ ๋˜์ง€ ์•Š์Šต" -"๋‹ˆ๋‹ค. ์ •์  ๋ณ€์ˆ˜๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€(unsafe) ๋Ÿฌ์ŠคํŠธ์™€ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์šฉ ์ฝ”๋“œ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์˜ ์ˆ˜๋ช…" -"์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ „์ฒด ์‹œ๊ฐ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค." +msgid "As noted in the [Rust RFC Book][1], these are not inlined upon use and have an actual associated memory location. This is useful for unsafe and embedded code, and the variable lives through the entirety of the program execution." +msgstr "[Rust RFC Book][1]์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ์ •์  ๋ณ€์ˆ˜๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ์ธ๋ผ์ธ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •์  ๋ณ€์ˆ˜๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€(unsafe) ๋Ÿฌ์ŠคํŠธ์™€ ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ์šฉ ์ฝ”๋“œ์—์„œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋“ค์˜ ์ˆ˜๋ช…์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ „์ฒด ์‹œ๊ฐ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค." #: src/basic-syntax/static-and-const.md:44 msgid "We will look at mutating static data in the [chapter on Unsafe Rust](../unsafe.md)." @@ -3485,15 +3314,12 @@ msgstr "๊ฐ€๋ณ€ ์ •์  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ [๋Ÿฌ์ŠคํŠธ #: src/basic-syntax/static-and-const.md:48 msgid "" "* Mention that `const` behaves semantically similar to C++'s `constexpr`.\n" -"* `static`, on the other hand, is much more similar to a `const` or mutable global variable in C+" -"+.\n" -"* It isn't super common that one would need a runtime evaluated constant, but it is helpful and " -"safer than using a static." +"* `static`, on the other hand, is much more similar to a `const` or mutable global variable in C++.\n" +"* It isn't super common that one would need a runtime evaluated constant, but it is helpful and safer than using a static." msgstr "" "* `const`๋Š” C++์˜ `constexpr`๊ณผ ๋งค์šฐ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.\n" "* ๋ฐ˜๋ฉด์— `static`์€ C++์˜ `const`๋‚˜ ๊ฐ€๋ณ€ ์ •์  ๋ณ€์ˆ˜์™€ ํ›จ์”ฌ ๋” ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" -"* ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰์‹œ ๊ทธ ๊ฐ’์ด ์ •ํ•ด์ง€๋Š” ์ƒ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด๋„, ์ •์  ๋ณ€์ˆ˜" -"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๋” ์œ ์šฉํ•˜๊ณ  ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค." +"* ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰์‹œ ๊ทธ ๊ฐ’์ด ์ •ํ•ด์ง€๋Š” ์ƒ์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๋“œ๋ญ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด๋„, ์ •์  ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๋” ์œ ์šฉํ•˜๊ณ  ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค." #: src/basic-syntax/static-and-const.md:54 msgid "[1]: https://rust-lang.github.io/rfcs/0246-const-vs-static.html" @@ -3540,23 +3366,15 @@ msgstr "" #: src/basic-syntax/scopes-shadowing.md:25 msgid "" -"* Definition: Shadowing is different from mutation, because after shadowing both variable's memory " -"locations exist at the same time. Both are available under the same name, depending where you use " -"it in the code. \n" +"* Definition: Shadowing is different from mutation, because after shadowing both variable's memory locations exist at the same time. Both are available under the same name, depending where you use it in the code. \n" "* A shadowing variable can have a different type. \n" "* Shadowing looks obscure at first, but is convenient for holding on to values after `.unwrap()`.\n" -"* The following code demonstrates why the compiler can't simply reuse memory locations when " -"shadowing an immutable variable in a scope, even if the type does not change." +"* The following code demonstrates why the compiler can't simply reuse memory locations when shadowing an immutable variable in a scope, even if the type does not change." msgstr "" -"* ์‰๋„์ž‰์€ ๊ธฐ์กด ๋ณ€์ˆ˜์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‰๋„์ž‰์„ ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ธฐ ์ƒ๊ธฐ๋ฉฐ, ์ด" -"์ „ ๋ณ€์ˆ˜์™€ ์ƒˆ ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‘ ๋ณ€์ˆ˜๋Š” ๋‹จ์ง€ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฟ์ด๋ฉฐ, ์ฝ”" -"๋“œ ์ค‘ ์–ด๋””์—์„œ ๊ทธ ์ด๋ฆ„์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š๋ƒ์— ๋”ฐ๋ผ ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ์ง€์นญํ•˜๋Š” ์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.\n" +"* ์‰๋„์ž‰์€ ๊ธฐ์กด ๋ณ€์ˆ˜์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‰๋„์ž‰์„ ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ธฐ ์ƒ๊ธฐ๋ฉฐ, ์ด์ „ ๋ณ€์ˆ˜์™€ ์ƒˆ ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‘ ๋ณ€์ˆ˜๋Š” ๋‹จ์ง€ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฟ์ด๋ฉฐ, ์ฝ”๋“œ ์ค‘ ์–ด๋””์—์„œ ๊ทธ ์ด๋ฆ„์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š๋ƒ์— ๋”ฐ๋ผ ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ์ง€์นญํ•˜๋Š” ์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.\n" "* ์‰๋„์ž‰ ์‹œ ํƒ€์ž…์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* ์ฒ˜์Œ์— ์‰๋„์ž‰์„ ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ๋ชจํ˜ธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ์‰๋„์ž‰์„ ์ด" -"์šฉํ•˜๋ฉด, ์–ด๋–ค ๋ณ€์ˆ˜์—์„œ `.unwrap()` ๋œ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋‹ด์„ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์ด๋ฆ„์„ ์ง€์„ ํ•„์š” ์—†์ด ๊ธฐ" -"์กด ์ด๋ฆ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.\n" -"* ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์‰๋„์ž‰ํ•  ๋•Œ ํƒ€์ž…์ด ๋™์ผํ•˜๋”๋ผ๋„ ์ƒˆ ๋ณ€์ˆ˜๊ฐ€ ์›๋ž˜ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ์žฌ์‚ฌ" -"์šฉ ํ•  ์ˆ˜ ์—†๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." +"* ์ฒ˜์Œ์— ์‰๋„์ž‰์„ ๋ณด๋ฉด ์ฝ”๋“œ๋ฅผ ๋” ๋ชจํ˜ธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ์‰๋„์ž‰์„ ์ด์šฉํ•˜๋ฉด, ์–ด๋–ค ๋ณ€์ˆ˜์—์„œ `.unwrap()` ๋œ ๊ฐ’์„ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์— ๋‹ด์„ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ์ด๋ฆ„์„ ์ง€์„ ํ•„์š” ์—†์ด ๊ธฐ์กด ์ด๋ฆ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์‰๋„์ž‰ํ•  ๋•Œ ํƒ€์ž…์ด ๋™์ผํ•˜๋”๋ผ๋„ ์ƒˆ ๋ณ€์ˆ˜๊ฐ€ ์›๋ž˜ ๋ณ€์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." #: src/basic-syntax/scopes-shadowing.md:30 msgid "" @@ -3583,10 +3401,8 @@ msgid "" "* Full control via manual memory management: C, C++, Pascal, ...\n" "* Full safety via automatic memory management at runtime: Java, Python, Go, Haskell, ..." msgstr "" -"* ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์™„์ „ํ•œ ํ†ต์ œํ•˜์— ์žˆ์ง€๋งŒ ์ˆ˜๋™(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”)์ด ์–ธ" -"์–ด: C, C++, Pascal, ...\n" -"* ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์˜ํ•ด ๋˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜์ง€๋งŒ ์ž๋™(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐœ์ž…ํ•  ์—ฌ์ง€๊ฐ€ ์ ๊ฑฐ" -"๋‚˜ ์—†๋Š”)์ธ ์–ธ์–ด: Java, Python, Go, Haskell, ... " +"* ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์™„์ „ํ•œ ํ†ต์ œํ•˜์— ์žˆ์ง€๋งŒ ์ˆ˜๋™(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š”)์ด ์–ธ์–ด: C, C++, Pascal, ...\n" +"* ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๋Ÿฐํƒ€์ž„์— ์˜ํ•ด ๋˜๋ฏ€๋กœ ์•ˆ์ „ํ•˜์ง€๋งŒ ์ž๋™(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐœ์ž…ํ•  ์—ฌ์ง€๊ฐ€ ์ ๊ฑฐ๋‚˜ ์—†๋Š”)์ธ ์–ธ์–ด: Java, Python, Go, Haskell, ... " #: src/memory-management.md:8 msgid "Rust offers a new mix:" @@ -3622,8 +3438,7 @@ msgstr "" " * ์—ฌ๊ธฐ ์ €์žฅ๋˜๋Š” ๊ฐ’์€ ์ปดํŒŒ์ผ ์‹œ ๊ฒฐ์ •๋˜๋Š” ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. \n" " * ๋งค์šฐ ๋น ๋ฆ„: ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/๋ฐ˜ํ™˜์ด ๋‹จ์ง€ ์Šคํƒ ํฌ์ธํ„ฐ์˜ ์ด๋™๋งŒ์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.\n" " * ๊ด€๋ฆฌ๊ฐ€ ์‰ฌ์›€: ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ• ๋‹น๋˜๊ณ , ๋ฆฌํ„ดํ•˜๋ฉด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.\n" -" * ์Šคํƒ์— ์žˆ๋Š” ๊ฐ’๋“ค์€ ๋งค์šฐ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์ธ์ ‘์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ์บ์‹œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•  " -"์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)" +" * ์Šคํƒ์— ์žˆ๋Š” ๊ฐ’๋“ค์€ ๋งค์šฐ ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์ธ์ ‘์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค(_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ์บ์‹œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)" #: src/memory-management/stack-vs-heap.md:9 msgid "" @@ -3645,9 +3460,7 @@ msgstr "# ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ" msgid "" "Creating a `String` puts fixed-sized data on the stack and dynamically sized\n" "data on the heap:" -msgstr "" -"`String` ํƒ€์ž…์€ ๊ณ ์ • ํฌ๊ธฐ ๋ฐ์ดํ„ฐ(_์—ญ์ฃผ_: ๋ฌธ์ž์—ด์˜ ๊ธธ์ด, ๋ฌธ์ž์—ด์ด ์ €์žฅ๋œ ๋ฒ„ํผ์˜ ์ฃผ์†Œ ๋“ฑ)๋Š” ์Šคํƒ์— ์ €" -"์žฅํ•˜๊ณ , ๊ฐ€๋ณ€ ํฌ๊ธฐ ๋ฐ์ดํ„ฐ(_์—ญ์ฃผ_: ๋ฌธ์ž์—ด ๋ฒ„ํผ)๋Š” ํž™์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:" +msgstr "`String` ํƒ€์ž…์€ ๊ณ ์ • ํฌ๊ธฐ ๋ฐ์ดํ„ฐ(_์—ญ์ฃผ_: ๋ฌธ์ž์—ด์˜ ๊ธธ์ด, ๋ฌธ์ž์—ด์ด ์ €์žฅ๋œ ๋ฒ„ํผ์˜ ์ฃผ์†Œ ๋“ฑ)๋Š” ์Šคํƒ์— ์ €์žฅํ•˜๊ณ , ๊ฐ€๋ณ€ ํฌ๊ธฐ ๋ฐ์ดํ„ฐ(_์—ญ์ฃผ_: ๋ฌธ์ž์—ด ๋ฒ„ํผ)๋Š” ํž™์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:" #: src/memory-management/stack.md:6 msgid "" @@ -3676,28 +3489,18 @@ msgid "" msgstr "" #: src/memory-management/stack.md:28 -msgid "" -"* Mention that a `String` is backed by a `Vec`, so it has a capacity and length and can grow if " -"mutable via reallocation on the heap." -msgstr "" -"* ๋ฌธ์ž์—ด(`String`)์€ ์‹ค์ œ๋กœ๋Š” `Vec`์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ(capacity)์™€ ํ˜„์žฌ ๊ธธ์ด(length) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋” ํฐ " -"ํฌ๊ธฐ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ํž™์—์„œ ์žฌ ํ• ๋‹น์„ ํ•ฉ๋‹ˆ๋‹ค." +msgid "* Mention that a `String` is backed by a `Vec`, so it has a capacity and length and can grow if mutable via reallocation on the heap." +msgstr "* ๋ฌธ์ž์—ด(`String`)์€ ์‹ค์ œ๋กœ๋Š” `Vec`์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ(capacity)์™€ ํ˜„์žฌ ๊ธธ์ด(length) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋” ํฐ ํฌ๊ธฐ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ ํž™์—์„œ ์žฌ ํ• ๋‹น์„ ํ•ฉ๋‹ˆ๋‹ค." #: src/memory-management/stack.md:30 -msgid "" -"* If students ask about it, you can mention that the underlying memory is heap allocated using the " -"[System Allocator] and custom allocators can be implemented using the [Allocator API]" +msgid "* If students ask about it, you can mention that the underlying memory is heap allocated using the [System Allocator] and custom allocators can be implemented using the [Allocator API]" msgstr "" "* ํž™์€ ๊ธฐ๋ณธ์ ์œผ๋กœ [System Allocator]๋ฅผ ํ†ตํ•ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  [Allocator API]๋ฅผ ์ด์šฉํ•ด์„œ\n" " ์ปค์Šคํ…€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/memory-management/stack.md:32 -msgid "" -"* We can inspect the memory layout with `unsafe` code. However, you should point out that this is " -"rightfully unsafe!" -msgstr "" -"* `unsafe` ์ฝ”๋“œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ์•Œ๋ ค์ฃผ" -"์„ธ์š”." +msgid "* We can inspect the memory layout with `unsafe` code. However, you should point out that this is rightfully unsafe!" +msgstr "* `unsafe` ์ฝ”๋“œ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ์•Œ๋ ค์ฃผ์„ธ์š”." #: src/memory-management/stack.md:34 msgid "" @@ -3748,8 +3551,7 @@ msgid "You allocate and deallocate heap memory yourself." msgstr "์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น, ํ•ด์ œ ํ•ฉ๋‹ˆ๋‹ค." #: src/memory-management/manual.md:5 -msgid "" -"If not done with care, this can lead to crashes, bugs, security vulnerabilities, and memory leaks." +msgid "If not done with care, this can lead to crashes, bugs, security vulnerabilities, and memory leaks." msgstr "์กฐ์‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด, ์ถฉ๋Œ(crash), ๋ฒ„๊ทธ, ๋ณด์•ˆ์ทจ์•ฝ์„ฑ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ถœ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/memory-management/manual.md:7 @@ -3787,8 +3589,7 @@ msgstr "# ๋ฒ”์œ„๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ" #: src/memory-management/scope-based.md:3 msgid "Constructors and destructors let you hook into the lifetime of an object." -msgstr "" -"์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "์ƒ์„ฑ์ž์™€ ์†Œ๋ฉธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ๋ช…์ฃผ๊ธฐ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น/ํ•ด์ œ๊ฐ€ ์ผ์–ด๋‚˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/memory-management/scope-based.md:5 msgid "" @@ -3798,16 +3599,13 @@ msgid "" msgstr "" "ํฌ์ธํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๊ฐ์‹ธ๋„๋ก ํ•˜๋ฉด, ๊ทธ ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ๊ทธ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ \n" "ํ•ด์ œ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ๋ฐ˜๋“œ์‹œ ์†Œ๋ฉธ์ž๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ \n" -"๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด๋Š” ์˜ˆ์™ธ(exception)๊ฐ€ ๋ฐœ์ƒ(_์—ญ์ฃผ_: ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด์ด๋‚˜ ์Šค์ฝ”ํ”„์˜ ์ข…๋ฃŒ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ) ํ•˜" -"๋”๋ผ๋„์š”." +"๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด๋Š” ์˜ˆ์™ธ(exception)๊ฐ€ ๋ฐœ์ƒ(_์—ญ์ฃผ_: ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด์ด๋‚˜ ์Šค์ฝ”ํ”„์˜ ์ข…๋ฃŒ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ) ํ•˜๋”๋ผ๋„์š”." #: src/memory-management/scope-based.md:9 msgid "" "This is often called _resource acquisition is initialization_ (RAII) and gives\n" "you smart pointers." -msgstr "" -"์ด๋ฅผ ์ข…์ข… RAII (Resource Acquisition Is Initialization)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋Ÿฐ ๊ฐ์ฒด๋Š” ์ผ์ข…์˜ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ " -"์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์ด๋ฅผ ์ข…์ข… RAII (Resource Acquisition Is Initialization)๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋Ÿฐ ๊ฐ์ฒด๋Š” ์ผ์ข…์˜ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค." #: src/memory-management/scope-based.md:12 msgid "## C++ Example" @@ -3869,9 +3667,7 @@ msgstr "## Jave ์˜ˆ์ œ" #: src/memory-management/garbage-collection.md:11 msgid "The `person` object is not deallocated after `sayHello` returns:" -msgstr "" -"`person`๊ฐ์ฒด๋Š” `sayHello`ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ํ›„์—๋„ ํ•ด์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: GC๊ฐ€ ๋‚˜์ค‘์— ์•Œ์•„์„œ ํ•ด์ œํ•ฉ๋‹ˆ" -"๋‹ค.)" +msgstr "`person`๊ฐ์ฒด๋Š” `sayHello`ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ํ›„์—๋„ ํ•ด์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: GC๊ฐ€ ๋‚˜์ค‘์— ์•Œ์•„์„œ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.)" #: src/memory-management/garbage-collection.md:13 msgid "" @@ -3893,32 +3689,22 @@ msgstr "๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…ํ•œ ๋ฐฉ์‹๋“ค์„ ํ˜ผ #: src/memory-management/rust.md:5 msgid "" "* Safe and correct like Java, but without a garbage collector.\n" -"* Depending on which abstraction (or combination of abstractions) you choose, can be a single " -"unique pointer, reference counted, or atomically reference counted.\n" +"* Depending on which abstraction (or combination of abstractions) you choose, can be a single unique pointer, reference counted, or atomically reference counted.\n" "* Scope-based like C++, but the compiler enforces full adherence.\n" -"* A Rust user can choose the right abstraction for the situation, some even have no cost at " -"runtime like C." +"* A Rust user can choose the right abstraction for the situation, some even have no cost at runtime like C." msgstr "" "* ์ž๋ฐ”์ฒ˜๋Ÿผ ์•ˆ์ „ํ•˜๊ณ  ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ GC๋Š” ์—†์Šต๋‹ˆ๋‹ค. \n" "* ๋‹ค์–‘ํ•œ ์ถ”์ƒํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: ๋‹จ์ผ ํฌ์ธํ„ฐ, ์ฐธ์กฐ ์นด์šดํŠธ, ์•„ํ† ๋ฏน(atomic) ์ฐธ์กฐ ์นด์šดํŠธ\n" "* C++ ์ฒ˜๋Ÿผ ๋ฒ”์œ„(์Šค์ฝ”ํ”„) ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ›จ์”ฌ ๋” ์—„๊ฒฉํ•ฉ๋‹ˆ๋‹ค.\n" -"* ์‚ฌ์šฉ์ž๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์ถ”์ƒํ™”๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—๋Š” C ์–ธ์–ด ์ฒ˜๋Ÿผ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ " -"์—†๋Š” ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค." +"* ์‚ฌ์šฉ์ž๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์ถ”์ƒํ™”๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—๋Š” C ์–ธ์–ด ์ฒ˜๋Ÿผ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†๋Š” ๊ฒƒ๋„ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/memory-management/rust.md:10 msgid "It achieves this by modeling _ownership_ explicitly." msgstr "๋Ÿฌ์ŠคํŠธ๋Š” _์†Œ์œ ๊ถŒ_์„ ์–ธ์–ด ์ฐจ์›์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๋ชจ๋ธ๋ง ํ•จ์œผ๋กœ์จ ์ด๋ฅผ ์ด๋ฃน๋‹ˆ๋‹ค." #: 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." -msgstr "" -"* ์ด ์‹œ์ ์—์„œ ๊ทธ๊ฒŒ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•˜๋ƒ๋Š” ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด, ๋Ÿฌ์ŠคํŠธ์—์„œ ์ด ์ž‘์—…์€ ์ผ๋ฐ˜์ ์œผ๋กœ [Box], [Vec], " -"[Rc] ๋˜๋Š” [Arc]์™€ ๊ฐ™์€ RAII ํƒ€์ž…์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค๊ณ  ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์†Œ" -"์œ ๊ถŒ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„์„ ์บก์Šํ™”ํ•˜์—ฌ, 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." +msgstr "* ์ด ์‹œ์ ์—์„œ ๊ทธ๊ฒŒ ์–ด๋–ป๊ฒŒ ๊ฐ€๋Šฅํ•˜๋ƒ๋Š” ์งˆ๋ฌธ์ด ์žˆ์œผ๋ฉด, ๋Ÿฌ์ŠคํŠธ์—์„œ ์ด ์ž‘์—…์€ ์ผ๋ฐ˜์ ์œผ๋กœ [Box], [Vec], [Rc] ๋˜๋Š” [Arc]์™€ ๊ฐ™์€ RAII ํƒ€์ž…์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค๊ณ  ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์†Œ์œ ๊ถŒ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„์„ ์บก์Šํ™”ํ•˜์—ฌ, C ์–ธ์–ด์˜€๋‹ค๋ฉด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๋‹ค์–‘ํ•œ ์—๋Ÿฌ๋ฅผ ๋ง‰์Šต๋‹ˆ๋‹ค." #: src/memory-management/rust.md:16 msgid "* You may be asked about destructors here, the [Drop] trait is the Rust equivalent." @@ -3999,8 +3785,7 @@ msgstr "" " * ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ถœ ๋ฌธ์ œ\n" "* JAVA์™€ ๊ฐ™์€ ์ž๋™ํ™” ๊ด€๋ฆฌ: \n" " * GC๋™์ž‘์œผ๋กœ ์ธํ•œ ๋ฉˆ์ถค\n" -" * ์†Œ๋ฉธ์ž ์ง€์—ฐ (_์—ญ์ฃผ_: ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ๊ณง๋ฐ”๋กœ ํ•ด์ œ ๋˜์ง€ ์•Š๊ณ  GC๊ฐ€ ๋™์ž‘ํ•  " -"๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ์ )\n" +" * ์†Œ๋ฉธ์ž ์ง€์—ฐ (_์—ญ์ฃผ_: ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋”์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ๊ณง๋ฐ”๋กœ ํ•ด์ œ ๋˜์ง€ ์•Š๊ณ  GC๊ฐ€ ๋™์ž‘ํ•  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๋Š” ์ )\n" "* C++ ์™€ ๊ฐ™์€ ๋ฒ”์œ„ ๊ธฐ๋ฐ˜ ๊ด€๋ฆฌ: \n" " * ๋ณต์žกํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž์˜ ์„ ํƒ์‚ฌํ•ญ์ž„\n" " * ์‚ฌ์šฉ ํ›„ ํ•ด์ œ ๋ฌธ์ œ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ\n" @@ -4016,8 +3801,7 @@ msgstr "# ์†Œ์œ ๊ถŒ" msgid "" "All variable bindings have a _scope_ where they are valid and it is an error to\n" "use a variable outside its scope:" -msgstr "" -"๋ชจ๋“  ๋ณ€์ˆ˜ ๋ฐ”์ธ๋”ฉ์€ ์œ ํšจํ•œ _๋ฒ”์œ„(์Šค์ฝ”ํ”„)_๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ฒ”์œ„ ๋ฐ–์—์„œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค." +msgstr "๋ชจ๋“  ๋ณ€์ˆ˜ ๋ฐ”์ธ๋”ฉ์€ ์œ ํšจํ•œ _๋ฒ”์œ„(์Šค์ฝ”ํ”„)_๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ฒ”์œ„ ๋ฐ–์—์„œ ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค." #: src/ownership.md:6 msgid "" @@ -4082,15 +3866,11 @@ msgstr "" "* ๊ฐ’(๋ฐ์ดํ„ฐ)์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜๋Š” ํ•ญ์ƒ _๋‹จ_ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค." #: 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!)." -msgstr "" -"* ์ด๋Š” C++๊ณผ ์ •๋ฐ˜๋Œ€ ์ž„์„ ์„ค๋ช…ํ•˜์„ธ์š”. C++์—์„œ๋Š” ๋ณต์‚ฌ๊ฐ€ ๊ธฐ๋ณธ์ด๊ณ , `std::move` ๋ฅผ ์ด์šฉํ•ด์•ผ๋งŒ (๊ทธ๋ฆฌ๊ณ  " -"์ด๋™ ์ƒ์„ฑ์ž๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ๋งŒ!) ์†Œ์œ ๊ถŒ ์ด์ „์ด ๋ฉ๋‹ˆ๋‹ค." +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!)." +msgstr "* ์ด๋Š” C++๊ณผ ์ •๋ฐ˜๋Œ€ ์ž„์„ ์„ค๋ช…ํ•˜์„ธ์š”. C++์—์„œ๋Š” ๋ณต์‚ฌ๊ฐ€ ๊ธฐ๋ณธ์ด๊ณ , `std::move` ๋ฅผ ์ด์šฉํ•ด์•ผ๋งŒ (๊ทธ๋ฆฌ๊ณ  ์ด๋™ ์ƒ์„ฑ์ž๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ๋งŒ!) ์†Œ์œ ๊ถŒ ์ด์ „์ด ๋ฉ๋‹ˆ๋‹ค." #: src/ownership/move-semantics.md:24 -msgid "* In Rust, you clones are explicit (by using `clone`)." +msgid "* In Rust, clones are explicit (by using `clone`)." msgstr "* ๋Ÿฌ์ŠคํŠธ์—์„œ๋Š” ๋ณต์‚ฌํ• ๋•Œ์—๋Š” ๋ช…์‹œ์ ์œผ๋กœ `clone`์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/ownership/moved-strings-rust.md:1 @@ -4268,23 +4048,17 @@ msgstr "" #: src/ownership/moves-function-calls.md:20 msgid "" -"* With the first call to `say_hello`, `main` gives up ownership of `name`. Afterwards, `name` " -"cannot be used anymore within `main`.\n" +"* With the first call to `say_hello`, `main` gives up ownership of `name`. Afterwards, `name` cannot be used anymore within `main`.\n" "* The heap memory allocated for `name` will be freed at the end of the `say_hello` function.\n" -"* `main` can retain ownership if it passes `name` as a reference (`&name`) and if `say_hello` " -"accepts a reference as a parameter.\n" +"* `main` can retain ownership if it passes `name` as a reference (`&name`) and if `say_hello` accepts a reference as a parameter.\n" "* Alternatively, `main` can pass a clone of `name` in the first call (`name.clone()`).\n" -"* Rust makes it harder than C++ to inadvertently create copies by making move semantics the " -"default, and by forcing programmers to make clones explicit." +"* Rust makes it harder than C++ to inadvertently create copies by making move semantics the default, and by forcing programmers to make clones explicit." msgstr "" -"* `say_hello`ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ํ˜ธ์ถœ์‹œ `main`ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ๊ฐ€์ง„ `name`์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์„ ํฌ๊ธฐํ•˜๋ฏ€๋กœ, ์ดํ›„ " -"`main`ํ•จ์ˆ˜์—์„œ๋Š” `name`์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. \n" +"* `say_hello`ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ํ˜ธ์ถœ์‹œ `main`ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ๊ฐ€์ง„ `name`์— ๋Œ€ํ•œ ์†Œ์œ ๊ถŒ์„ ํฌ๊ธฐํ•˜๋ฏ€๋กœ, ์ดํ›„ `main`ํ•จ์ˆ˜์—์„œ๋Š” `name`์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. \n" "* `name`์— ํ• ๋‹น๋˜์žˆ๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ๋Š” `say_hello`ํ•จ์ˆ˜์˜ ๋์—์„œ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.\n" -"* `main`ํ•จ์ˆ˜์—์„œ `name`์„ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ(๋นŒ๋ฆผ)ํ•˜๊ณ (`&name`), `say_hello`์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ˜•์œผ๋กœ ์ˆ˜" -"์ •ํ•œ๋‹ค๋ฉด `main`ํ•จ์ˆ˜๋Š” `name`์˜ ์†Œ์œ ๊ถŒ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \n" +"* `main`ํ•จ์ˆ˜์—์„œ `name`์„ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ(๋นŒ๋ฆผ)ํ•˜๊ณ (`&name`), `say_hello`์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ˜•์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค๋ฉด `main`ํ•จ์ˆ˜๋Š” `name`์˜ ์†Œ์œ ๊ถŒ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \n" "* ๋˜๋Š” ์ฒซ๋ฒˆ์งธ ํ˜ธ์ถœ ์‹œ `main`ํ•จ์ˆ˜์—์„œ `name`์„ ๋ณต์ œํ•˜์—ฌ ์ „๋‹ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.(`name.clone()`)\n" -"* ๋Ÿฌ์ŠคํŠธ๋Š” ์ด๋™์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ณ  ๋ณต์ œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋„๋ก ๋งŒ๋“ฌ์œผ๋กœ, ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” " -"๊ฒƒ์ด C++์—์„œ๋ณด๋‹ค ์–ด๋ ต์Šต๋‹ˆ๋‹ค. \n" +"* ๋Ÿฌ์ŠคํŠธ๋Š” ์ด๋™์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ณ  ๋ณต์ œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ ์–ธํ•˜๋„๋ก ๋งŒ๋“ฌ์œผ๋กœ, ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด C++์—์„œ๋ณด๋‹ค ์–ด๋ ต์Šต๋‹ˆ๋‹ค. \n" " " #: src/ownership/copy-clone.md:1 @@ -4349,16 +4123,12 @@ msgstr "๋ณต์‚ฌ(copying)์™€ ๋ณต์ œ(cloning)๋Š” ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค: " msgid "" "* Copying refers to bitwise copies of memory regions and does not work on arbitrary objects.\n" "* Copying does not allow for custom logic (unlike copy constructors in C++).\n" -"* Cloning is a more general operation and also allows for custom behavior by implementing the " -"`Clone` trait.\n" +"* Cloning is a more general operation and also allows for custom behavior by implementing the `Clone` trait.\n" "* Copying does not work on types that implement the `Drop` trait." msgstr "" -"* ๋ณต์‚ฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ํ•œ ๋ฒŒ ๋” ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์•„๋ฌด ๊ฐ์ฒด์—์„œ๋‚˜ ๋‹ค ์ง€์›ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ" -"๋‹ค. \n" -"* ๋ณต์‚ฌ๋Š” ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (C++์—์„œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋ณต์‚ฌ ๋™์ž‘์„ ์ž„์˜๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ" -"๋Š” ๊ฒƒ๊ณผ ๋น„๊ต๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.)\n" -"* ๋ณต์ œ๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์ด๋ฉฐ, `Clone`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ณต์ œ์‹œ ๋™์ž‘์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ" -"๋‹ค.\n" +"* ๋ณต์‚ฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ํ•œ ๋ฒŒ ๋” ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ, ์•„๋ฌด ๊ฐ์ฒด์—์„œ๋‚˜ ๋‹ค ์ง€์›ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. \n" +"* ๋ณต์‚ฌ๋Š” ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (C++์—์„œ ๋ณต์‚ฌ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๋ณต์‚ฌ ๋™์ž‘์„ ์ž„์˜๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋น„๊ต๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.)\n" +"* ๋ณต์ œ๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์ด๋ฉฐ, `Clone`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ณต์ œ์‹œ ๋™์ž‘์„ ์ปค์Šคํ„ฐ๋งˆ์ด์ฆˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* `Drop` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•œ ํƒ€์ž…์€ ๋ณต์‚ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/ownership/copy-clone.md:42 src/ownership/lifetimes-function-calls.md:29 @@ -4367,29 +4137,22 @@ msgstr "์œ„์˜ ์˜ˆ์‹œ์—์„œ ๋‹ค์Œ์„ ์‹œ๋„ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค:" #: src/ownership/copy-clone.md:44 msgid "" -"* Add a `String` field to `struct Point`. It will not compile because `String` is not a `Copy` " -"type.\n" -"* Remove `Copy` from the `derive` attribute. The compiler error is now in the `println!` for " -"`p1`.\n" +"* Add a `String` field to `struct Point`. It will not compile because `String` is not a `Copy` type.\n" +"* Remove `Copy` from the `derive` attribute. The compiler error is now in the `println!` for `p1`.\n" "* Show that it works if you clone `p1` instead." msgstr "" -"* `Point`๊ตฌ์กฐ์ฒด์— `String`ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `String`์€ `Copy`" -"ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" -"* `derive` ์†์„ฑ์—์„œ `Copy`๋ฅผ ์ œ๊ฑฐํ•ด ๋ณด์„ธ์š”. `p1`์„ `println!` ํ•  ๋•Œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ" -"๋‹ค.\n" +"* `Point`๊ตฌ์กฐ์ฒด์— `String`ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `String`์€ `Copy`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +"* `derive` ์†์„ฑ์—์„œ `Copy`๋ฅผ ์ œ๊ฑฐํ•ด ๋ณด์„ธ์š”. `p1`์„ `println!` ํ•  ๋•Œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" "* `p1`์„ ๋ณต์ œํ•˜๋ฉด ์ž˜ ๋™์ž‘ํ•จ์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”." #: src/ownership/copy-clone.md:48 msgid "" -"If students ask about `derive`, it is sufficient to say that this is a way to generate code in " -"Rust\n" -"at compile time. In this case the default implementations of `Copy` and `Clone` traits are " -"generated.\n" +"If students ask about `derive`, it is sufficient to say that this is a way to generate code in Rust\n" +"at compile time. In this case the default implementations of `Copy` and `Clone` traits are generated.\n" " \n" "" msgstr "" -"๋งŒ์•ฝ ํ•™์ƒ๋“ค์ด `derive`์— ๋Œ€ํ•ด ๋ฌป๋Š”๋‹ค๋ฉด, ์ปดํŒŒ์ผ ์‹œ ๋Ÿฌ์ŠคํŠธ์—์„œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์œผ" -"๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.\n" +"๋งŒ์•ฝ ํ•™์ƒ๋“ค์ด `derive`์— ๋Œ€ํ•ด ๋ฌป๋Š”๋‹ค๋ฉด, ์ปดํŒŒ์ผ ์‹œ ๋Ÿฌ์ŠคํŠธ์—์„œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.\n" "์œ„ ๊ฒฝ์šฐ `Copy`์™€ `Clone` ํŠธ๋ ˆ์ดํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.\n" " \n" "" @@ -4440,15 +4203,10 @@ msgstr "" #: src/ownership/borrowing.md:27 msgid "" "Notes on stack returns:\n" -"* Demonstrate that the return from `add` is cheap because the compiler can eliminate the copy " -"operation. Change the above code to print stack addresses and run it on the [Playground]. In the " -"\"DEBUG\" optimization level, the addresses should change, while the stay the same when changing " -"to the \"RELEASE\" setting:" +"* Demonstrate that the return from `add` is cheap because the compiler can eliminate the copy operation. Change the above code to print stack addresses and run it on the [Playground]. In the \"DEBUG\" optimization level, the addresses should change, while the stay the same when changing to the \"RELEASE\" setting:" msgstr "" "์Šคํƒ์— ํ• ๋‹น๋œ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ฐธ๊ณ : \n" -"* `add`์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ’์ด ์‹ธ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜์„ธ์š”. ์™œ๋ƒํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณต์‚ฌ ๊ณผ์ •์„ " -"์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ์ˆ˜์ •ํ•˜๊ณ  [Playground]์—์„œ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ" -"์š”. \"๋””๋ฒ„๊ทธ\" ์ตœ์ ํ™” ๋ ˆ๋ฒจ์—์„œ๋Š” ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ์ง€๋งŒ, \"๋ฆด๋ฆฌ์ฆˆ\" ๋ ˆ๋ฒจ์—์„œ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค." +"* `add`์—์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ’์ด ์‹ธ๋‹ค๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜์„ธ์š”. ์™œ๋ƒํ•˜๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณต์‚ฌ ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์œ„ ์ฝ”๋“œ๋ฅผ ์Šคํƒ ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ์ˆ˜์ •ํ•˜๊ณ  [Playground]์—์„œ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ์š”. \"๋””๋ฒ„๊ทธ\" ์ตœ์ ํ™” ๋ ˆ๋ฒจ์—์„œ๋Š” ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ์ง€๋งŒ, \"๋ฆด๋ฆฌ์ฆˆ\" ๋ ˆ๋ฒจ์—์„œ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/ownership/borrowing.md:30 msgid "" @@ -4477,9 +4235,7 @@ msgid "" " }\n" " ```\n" "* The Rust compiler can do return value optimization (RVO).\n" -"* In C++, copy elision has to be defined in the language specification because constructors can " -"have side effects. In Rust, this is not an issue at all. If RVO did not happen, Rust will always " -"performs a simple and efficient `memcpy` copy." +"* In C++, copy elision has to be defined in the language specification because constructors can have side effects. In Rust, this is not an issue at all. If RVO did not happen, Rust will always performs a simple and efficient `memcpy` copy." msgstr "" " fn main() {\n" " let p1 = Point(3, 4);\n" @@ -4490,9 +4246,7 @@ msgstr "" " }\n" " ```\n" "* ๋Ÿฌ์ŠคํŠธ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐ˜ํ™˜๊ฐ’ ์ตœ์ ํ™”(RVO)๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* C++์—์„œ copy elision์€ ์ƒ์„ฑ์ž์˜ ๋ถ€์ˆ˜ํšจ๊ณผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์–ธ์–ด๋ ˆ๋ฒจ์˜ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ์—์„œ" -"๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ RVO๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋Ÿฌ์ŠคํŠธ๋Š” ํ•ญ์ƒ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ `memcpy`๋ณต์‚ฌ๋ฅผ " -"์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." +"* C++์—์„œ copy elision์€ ์ƒ์„ฑ์ž์˜ ๋ถ€์ˆ˜ํšจ๊ณผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด ์–ธ์–ด๋ ˆ๋ฒจ์˜ ์ •์˜๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ RVO๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋Ÿฌ์ŠคํŠธ๋Š” ํ•ญ์ƒ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ `memcpy`๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/ownership/borrowing.md:53 msgid "[Playground]: https://play.rust-lang.org/" @@ -4540,24 +4294,12 @@ msgstr "" #: src/ownership/shared-unique-borrows.md:25 msgid "" -"* The above code does not compile because `a` is borrowed as mutable (through `c`) and as " -"immutable (through `b`) at the same time.\n" -"* Move the `println!` statement for `b` before the scope that introduces `c` to make the code " -"compile.\n" -"* 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\"." +"* The above code does not compile because `a` is borrowed as mutable (through `c`) and as immutable (through `b`) at the same time.\n" +"* Move the `println!` statement for `b` before the scope that introduces `c` to make the code compile.\n" +"* 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 "" -"* ์œ„ ์ฝ”๋“œ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `c`๋Š” `a`๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ ธ๊ณ , ์ด์™€ ๋™์‹œ์— `b`๋Š” `a`๋ฅผ ๋ถˆ" -"๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ ธ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" -"* `b`์— ๋Œ€ํ•œ `println!` ๊ตฌ๋ถ„์„ `c`๊ฐ€ ์žˆ๋Š” ์Šค์ฝ”ํ”„ ์•ž์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ๋ฉ๋‹ˆ๋‹ค.* ์ด๋ ‡๊ฒŒ ๋ฐ”๊พธ๋ฉด, " -"์ปดํŒŒ์ผ๋Ÿฌ๋Š” `c`๊ฐ€ `a`๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ฆฌ๊ธฐ ์ „์—๋งŒ `b`๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋ฆผ ๊ฒ€" -"์‚ฌ๊ธฐ์˜ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ \"non-lexical lifetime\" ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: ๋‹จ์ˆœํžˆ ์Šค์ฝ”ํ”„๋งŒ ๋ณด๋ฉด `b`์˜ ์ˆ˜" -"๋ช…์€ `main`ํ•จ์ˆ˜์˜ ์ „์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— `c`์˜ ๋ธ”๋Ÿญ ์•ˆ์—์„œ๋Š” `a`์— ๋Œ€ํ•œ ๊ฐ€๋ณ€ ๋นŒ๋ฆผ๊ณผ ๋ถˆ" -"๋ณ€ ๋นŒ๋ฆผ์ด ๋™์‹œ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ, ์ด๋Š” ์œ„ ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. " -"๊ทธ๋Ÿฌ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” `b`๊ฐ€ `c`๋ธ”๋Ÿญ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์„ ์ ๊ทน ํ™œ์šฉํ•ด์„œ `b`์˜ ์ˆ˜๋ช…์„ `c`๋ธ”" -"๋Ÿญ์˜ ์‹œ์ž‘ ์ „ ๊นŒ์ง€๋กœ ์ค„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด `b`์™€ `c`์˜ ์ˆ˜๋ช…์€ ๊ฒน์น˜์ง€ ์•Š๊ณ , ๋”ฐ๋ผ์„œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š" -"์Šต๋‹ˆ๋‹ค.)" +"* ์œ„ ์ฝ”๋“œ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `c`๋Š” `a`๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ ธ๊ณ , ์ด์™€ ๋™์‹œ์— `b`๋Š” `a`๋ฅผ ๋ถˆ๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ ธ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +"* `b`์— ๋Œ€ํ•œ `println!` ๊ตฌ๋ถ„์„ `c`๊ฐ€ ์žˆ๋Š” ์Šค์ฝ”ํ”„ ์•ž์œผ๋กœ ์ด๋™ํ•˜๋ฉด ์ปดํŒŒ์ผ์ด ๋ฉ๋‹ˆ๋‹ค.* ์ด๋ ‡๊ฒŒ ๋ฐ”๊พธ๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” `c`๊ฐ€ `a`๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋นŒ๋ฆฌ๊ธฐ ์ „์—๋งŒ `b`๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ์˜ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ \"non-lexical lifetime\" ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: ๋‹จ์ˆœํžˆ ์Šค์ฝ”ํ”„๋งŒ ๋ณด๋ฉด `b`์˜ ์ˆ˜๋ช…์€ `main`ํ•จ์ˆ˜์˜ ์ „์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— `c`์˜ ๋ธ”๋Ÿญ ์•ˆ์—์„œ๋Š” `a`์— ๋Œ€ํ•œ ๊ฐ€๋ณ€ ๋นŒ๋ฆผ๊ณผ ๋ถˆ๋ณ€ ๋นŒ๋ฆผ์ด ๋™์‹œ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ, ์ด๋Š” ์œ„ ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” `b`๊ฐ€ `c`๋ธ”๋Ÿญ์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์—๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์„ ์ ๊ทน ํ™œ์šฉํ•ด์„œ `b`์˜ ์ˆ˜๋ช…์„ `c`๋ธ”๋Ÿญ์˜ ์‹œ์ž‘ ์ „ ๊นŒ์ง€๋กœ ์ค„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด `b`์™€ `c`์˜ ์ˆ˜๋ช…์€ ๊ฒน์น˜์ง€ ์•Š๊ณ , ๋”ฐ๋ผ์„œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)" #: src/ownership/lifetimes.md:1 msgid "# Lifetimes" @@ -4582,8 +4324,7 @@ msgstr "" "* ๋ฌผ๋ก  ๋ช…์‹œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค: `&'a Point`, `&'document str`.\n" "* `&'a Point` ๋Š” `Point`์˜ ์ˆ˜๋ช…์ด ์ตœ์†Œํ•œ `'a`๋ผ๋Š” ์ˆ˜๋ช…๋ณด๋‹ค๋Š” ๊ฐ™๊ฑฐ๋‚˜ ๋” ๊ธธ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" "* ์ˆ˜๋ช…์€ ํ•ญ์ƒ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ์ˆ˜๋ช…์„ ์ง€์ •ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.\n" -" * ์ˆ˜๋ช… ํ‘œ๊ธฐ(`'`)์€ ์ˆ˜๋ช… ์ถ”๋ก ์‹œ ์ œ์•ฝ์กฐ๊ฑด์ด ๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์œ ์š”ํ•œ ์ˆ˜๋ช…" -"์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค." +" * ์ˆ˜๋ช… ํ‘œ๊ธฐ(`'`)์€ ์ˆ˜๋ช… ์ถ”๋ก ์‹œ ์ œ์•ฝ์กฐ๊ฑด์ด ๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด ์ œ์•ฝ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ์œ ์š”ํ•œ ์ˆ˜๋ช…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค." #: src/ownership/lifetimes-function-calls.md:1 msgid "# Lifetimes in Function Calls" @@ -4626,8 +4367,7 @@ msgstr "" #: src/ownership/lifetimes-function-calls.md:31 msgid "" -"* Move the declaration of `p2` and `p3` into a a new scope (`{ ... }`), resulting in the following " -"code:\n" +"* Move the declaration of `p2` and `p3` into a a new scope (`{ ... }`), resulting in the following code:\n" " ```rust,ignore\n" " #[derive(Debug)]\n" " struct Point(i32, i32);" @@ -4672,25 +4412,19 @@ msgstr "" #: src/ownership/lifetimes-function-calls.md:52 msgid "" -"* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, " -"p2: &'a Point) -> &'b Point`. This will not compile because the relationship between the lifetimes " -"`'a` and `'b` is unclear.\n" +"* Reset the workspace and change the function signature to `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`. This will not compile because the relationship between the lifetimes `'a` and `'b` is unclear.\n" "* Another way to explain it:\n" " * Two references to two values are borrowed by a function and the function returns\n" " another reference.\n" " * It must have come from one of those two inputs (or from a global variable).\n" -" * Which one is it? The compiler needs to to know, so at the call site the returned reference is " -"not used\n" +" * Which one is it? The compiler needs to to know, so at the call site the returned reference is not used\n" " for longer than a variable from where the reference came from." msgstr "" -"* ์ž‘์—…๊ณต๊ฐ„์„ ์ดˆ๊ธฐํ™” ํ•œ ํ›„ ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> " -"&'b Point`๋กœ ๋ณ€๊ฒฝํ•ด ๋ด…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ `'a`์™€ `'b`์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ" -"๋‹ค.\n" +"* ์ž‘์—…๊ณต๊ฐ„์„ ์ดˆ๊ธฐํ™” ํ•œ ํ›„ ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ `fn left_most<'a, 'b>(p1: &'a Point, p2: &'a Point) -> &'b Point`๋กœ ๋ณ€๊ฒฝํ•ด ๋ด…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ `'a`์™€ `'b`์‚ฌ์ด์˜ ๊ด€๊ณ„๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" "* ์ด ์—๋Ÿฌ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: \n" " * ์ด ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐ’์„ ๋นŒ๋ ค์„œ, ์ƒˆ๋กœ์šด ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" " * ์ด ๋ฐ˜ํ™˜๋œ ์ฐธ์กฐ๋Š” ๋‘ ์ž…๋ ฅ ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ€ํ„ฐ ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์•„๋‹ˆ๋ฉด ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๋ถ€ํ„ฐ)\n" -" * ๋‘ ์ž…๋ ฅ ์ค‘ ์–ด๋–ค ๊ฒƒ์ผ๊นŒ์š”? ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ถ€์—์„œ ๋ดค์„ ๋•Œ, ๋ฐ˜ํ™˜" -"๋œ ์ฐธ์กฐ์˜ ์ˆ˜๋ช…์ด ์›๋ž˜ ๊ฐ’์„ ์ˆ˜๋ช…๋ณด๋‹ค ๊ธธ์ง€ ์•Š์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." +" * ๋‘ ์ž…๋ ฅ ์ค‘ ์–ด๋–ค ๊ฒƒ์ผ๊นŒ์š”? ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋ถ€์—์„œ ๋ดค์„ ๋•Œ, ๋ฐ˜ํ™˜๋œ ์ฐธ์กฐ์˜ ์ˆ˜๋ช…์ด ์›๋ž˜ ๊ฐ’์„ ์ˆ˜๋ช…๋ณด๋‹ค ๊ธธ์ง€ ์•Š์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/ownership/lifetimes-data-structures.md:1 msgid "# Lifetimes in Data Structures" @@ -4729,29 +4463,21 @@ msgstr "" #: src/ownership/lifetimes-data-structures.md:25 msgid "" -"* In the above example, the annotation on `Highlight` enforces that the data underlying the " -"contained `&str` lives at least as long as any instance of `Highlight` that uses that data.\n" -"* If `text` is consumed before the end of the lifetime of `fox` (or `dog`), the borrow checker " -"throws an error.\n" -"* Types with borrowed data force users to hold on to the original data. This can be useful for " -"creating lightweight views, but it generally makes them somewhat harder to use.\n" +"* In the above example, the annotation on `Highlight` enforces that the data underlying the contained `&str` lives at least as long as any instance of `Highlight` that uses that data.\n" +"* If `text` is consumed before the end of the lifetime of `fox` (or `dog`), the borrow checker throws an error.\n" +"* Types with borrowed data force users to hold on to the original data. This can be useful for creating lightweight views, but it generally makes them somewhat harder to use.\n" "* When possible, make data structures own their data directly.\n" -"* Some structs with multiple references inside can have more than one lifetime annotation. This " -"can be necessary if there is a need to describe lifetime relationships between the references " -"themselves, in addition to the lifetime of the struct itself. Those are very advanced use cases.\n" +"* Some structs with multiple references inside can have more than one lifetime annotation. This can be necessary if there is a need to describe lifetime relationships between the references themselves, in addition to the lifetime of the struct itself. Those are very advanced use cases.\n" "" msgstr "" -"* ์œ„์˜ ์˜ˆ์ œ์—์„œ `Highlight`์˜ ์–ด๋…ธํ…Œ์ด์…˜(`<'doc>`)์€ ์ ์–ด๋„ `Highlight` ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ์—" -"๋Š”\n" +"* ์œ„์˜ ์˜ˆ์ œ์—์„œ `Highlight`์˜ ์–ด๋…ธํ…Œ์ด์…˜(`<'doc>`)์€ ์ ์–ด๋„ `Highlight` ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ์—๋Š”\n" " ๊ทธ ๋‚ด๋ถ€์˜ `&str`๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์‚ด์•„์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" "* ๋งŒ์•ฝ `text`๊ฐ€ `fox` (ํ˜น์€ `dog`)์˜ ์ˆ˜๋ช…์ด ๋‹คํ•˜๊ธฐ ์ „์— `erase`ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋“ฑ์œผ๋กœ ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค๋ฉด\n" " ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.\n" -"* ๋นŒ๋ฆฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํƒ€์ž…์€ ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํƒ€์ž…" -"์€ ๊ฒฝ๋Ÿ‰ ๋ทฐ(lightweight view)๋ฅผ\n" +"* ๋นŒ๋ฆฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํƒ€์ž…์€ ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํƒ€์ž…์€ ๊ฒฝ๋Ÿ‰ ๋ทฐ(lightweight view)๋ฅผ\n" " ๋งŒ๋“œ๋Š”๋ฐ ์œ ์šฉํ•˜์ง€๋งŒ, ์ด ์ œ์•ฝ ์กฐ๊ฑด ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€๋งŒ์€ ์•Š์Šต๋‹ˆ๋‹ค.\n" "* ๋”ฐ๋ผ์„œ, ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ๊ตฌ์กฐ์ฒด๊ฐ€ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์†Œ์œ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.\n" -"* ํ•œ ๊ตฌ์กฐ์ฒด์•ˆ์— ์—ฌ๋Ÿฌ ์ฐธ์กฐ๊ฐ€ ์žˆ์œผ๋ฉด์„œ, ์ด ์ฐธ์กฐ๋“ค์˜ ์ˆ˜๋ช…์ด ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด" -"๋Š” ์ฐธ์กฐ์™€ ๊ทธ ๊ตฌ์กฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ,\n" +"* ํ•œ ๊ตฌ์กฐ์ฒด์•ˆ์— ์—ฌ๋Ÿฌ ์ฐธ์กฐ๊ฐ€ ์žˆ์œผ๋ฉด์„œ, ์ด ์ฐธ์กฐ๋“ค์˜ ์ˆ˜๋ช…์ด ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ์ง€์ •๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ฐธ์กฐ์™€ ๊ทธ ๊ตฌ์กฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ,\n" " ๊ทธ ์ฐธ์กฐ๋“ค ์‚ฌ์ด์˜ ์ˆ˜๋ช… ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ณ ๊ธ‰ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.\n" "" @@ -4805,9 +4531,7 @@ msgstr "" msgid "" "Use this to create a library application. Copy the code below to\n" " and update the types to make it compile:" -msgstr "" -"๋„์„œ๊ด€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•ด์„œ ๊ตฌํ˜„ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ" -"๋‹ค." +msgstr "๋„์„œ๊ด€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•ด์„œ ๊ตฌํ˜„ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค." #: src/exercises/day-1/book-library.md:24 msgid "" @@ -4816,7 +4540,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-1/book-library.md:28 src/exercises/day-1/solutions-afternoon.md:27 +#: src/exercises/day-1/book-library.md:28 +#: src/exercises/day-1/solutions-afternoon.md:27 msgid "" "struct Book {\n" " title: String,\n" @@ -4824,7 +4549,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-1/book-library.md:33 src/exercises/day-1/solutions-afternoon.md:32 +#: src/exercises/day-1/book-library.md:33 +#: src/exercises/day-1/solutions-afternoon.md:32 msgid "" "impl Book {\n" " // This is a constructor, used below.\n" @@ -4958,8 +4684,7 @@ msgid "" "traits." msgstr "" "๋Ÿฌ์ŠคํŠธ์˜ ์†Œ์œ ๊ถŒ ๋ชจ๋ธ์€ ๋งŽ์€ API์— ๋ฐ˜์˜์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. \n" -"์˜ˆ๋ฅผ๋“ค์–ด [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) ์™€ [`IntoIterator`]" -"(https://doc.rust-lang.org/std/iter/trait.IntoIterator.html) ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค." +"์˜ˆ๋ฅผ๋“ค์–ด [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) ์™€ [`IntoIterator`](https://doc.rust-lang.org/std/iter/trait.IntoIterator.html) ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-1/iterators-and-ownership.md:8 msgid "## `Iterator`" @@ -4969,9 +4694,7 @@ msgstr "" msgid "" "Traits are like interfaces: they describe behavior (methods) for a type. The\n" "`Iterator` trait simply says that you can call `next` until you get `None` back:" -msgstr "" -"ํŠธ๋ ˆ์ดํŠธ๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ ํ–‰๋™(๋ฉ”์„œ๋“œ)๋ฅผ ์„ค๋ช…ํ•œ๋‹ค๋Š” ์ ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. `Iterator`๋Š” ๋‹จ์ˆœ" -"ํžˆ `None`์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ `next`๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠธ๋ ˆ์ดํŠธ์ž…๋‹ˆ๋‹ค." +msgstr "ํŠธ๋ ˆ์ดํŠธ๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ ํ–‰๋™(๋ฉ”์„œ๋“œ)๋ฅผ ์„ค๋ช…ํ•œ๋‹ค๋Š” ์ ์—์„œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. `Iterator`๋Š” ๋‹จ์ˆœํžˆ `None`์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ `next`๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠธ๋ ˆ์ดํŠธ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-1/iterators-and-ownership.md:13 msgid "" @@ -5038,9 +4761,7 @@ msgstr "" msgid "" "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:" -msgstr "" -"`Iterator` ํŠธ๋ ˆ์ดํŠธ๋Š” ์ƒ์„ฑ๋œ ๋ฐ˜๋ณต์ž๋ฅผ _์‚ฌ์šฉ_ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด `IntoIterator` ํŠธ๋ ˆ์ดํŠธ๋Š” " -"๋ฐ˜๋ณต์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค:" +msgstr "`Iterator` ํŠธ๋ ˆ์ดํŠธ๋Š” ์ƒ์„ฑ๋œ ๋ฐ˜๋ณต์ž๋ฅผ _์‚ฌ์šฉ_ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด `IntoIterator` ํŠธ๋ ˆ์ดํŠธ๋Š” ๋ฐ˜๋ณต์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค:" #: src/exercises/day-1/iterators-and-ownership.md:53 msgid "" @@ -5075,9 +4796,7 @@ msgstr "" msgid "" "Note that `IntoIter` and `Item` are linked: the iterator must have the same\n" "`Item` type, which means that it returns `Option`" -msgstr "" -"`IntoIter`์—์„œ `Item`๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ์ฃผ๋ชฉํ•˜์„ธ์š”. `IntoIter` ๋ฐ˜๋ณต์ž๋Š” `Item` ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌ" -"์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ˜๋ณต์ž๋Š” `Option`์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค." +msgstr "`IntoIter`์—์„œ `Item`๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ์ฃผ๋ชฉํ•˜์„ธ์š”. `IntoIter` ๋ฐ˜๋ณต์ž๋Š” `Item` ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ˜๋ณต์ž๋Š” `Option`์„ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค." #: src/exercises/day-1/iterators-and-ownership.md:71 msgid "Like before, what is the type returned by the iterator?" @@ -5102,8 +4821,7 @@ msgid "" "iterator:" msgstr "" "์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” `Iterator`์™€ `IntoIterator`๋ฅผ ์•Œ์•˜์œผ๋ฏ€๋กœ `for` ๋ฃจํ”„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. \n" -"`for` ๋ฃจํ”„๋Š” `into_iter()`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜๋ณต์ž๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋“ค์„ ๋ฐ˜๋ณตํ•ด์„œ ์ ‘" -"๊ทผํ•ฉ๋‹ˆ๋‹ค:" +"`for` ๋ฃจํ”„๋Š” `into_iter()`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜๋ณต์ž๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์š”์†Œ๋“ค์„ ๋ฐ˜๋ณตํ•ด์„œ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค:" #: src/exercises/day-1/iterators-and-ownership.md:89 msgid "" @@ -5136,18 +4854,14 @@ msgstr "๋งค ๋ฃจํ”„์—์„œ `word`์˜ ํƒ€์ž…์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? " msgid "" "Experiment with the code above and then consult the documentation for [`impl\n" "IntoIterator for\n" -"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-" -"%26%27a%20Vec%3CT%2C%20A%3E)\n" +"&Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-%26%27a%20Vec%3CT%2C%20A%3E)\n" "and [`impl IntoIterator for\n" -"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-" -"Vec%3CT%2C%20A%3E)\n" +"Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-Vec%3CT%2C%20A%3E)\n" "to check your answers." msgstr "" "์œ„ ์ฝ”๋“œ์—์„œ ์‹คํ—˜ ํ•ด ๋ณธ ํ›„ ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•ด์„œ ๋‹ต๋ณ€์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" -"* [`impl IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-" -"IntoIterator-for-%26%27a%20Vec%3CT%2C%20A%3E)\n" -"* [`impl IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-" -"IntoIterator-for-Vec%3CT%2C%20A%3E)" +"* [`impl IntoIterator for &Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-%26%27a%20Vec%3CT%2C%20A%3E)\n" +"* [`impl IntoIterator for Vec`](https://doc.rust-lang.org/std/vec/struct.Vec.html#impl-IntoIterator-for-Vec%3CT%2C%20A%3E)" #: src/welcome-day-2.md:1 msgid "# Welcome to Day 2" @@ -5234,22 +4948,18 @@ msgid "" " * Unlike in C++, there is no inheritance between structs.\n" "* Methods are defined in an `impl` block, which we will see in following slides.\n" "* This may be a good time to let people know there are different types of structs. \n" -" * Zero-sized structs `e.g., struct Foo;` might be used when implementing a trait on some type " -"but donโ€™t have any data that you want to store in the value itself. \n" +" * Zero-sized structs `e.g., struct Foo;` might be used when implementing a trait on some type but donโ€™t have any data that you want to store in the value itself. \n" " * The next slide will introduce Tuple structs, used when the field names are not important.\n" -"* The syntax `..peter` allows us to copy the majority of the fields from the old struct without " -"having to explicitly type it all out. It must always be the last element." +"* The syntax `..peter` allows us to copy the majority of the fields from the old struct without having to explicitly type it all out. It must always be the last element." msgstr "" "* ๊ตฌ์กฐ์ฒด๋Š” C/C++ ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" " * C++ ์™€ ๊ฐ™์ง€๋งŒ C์™€๋Š” ๋‹ฌ๋ฆฌ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด 'typedef'๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" " * C++ ์™€ ๋‹ฌ๋ฆฌ ๊ตฌ์กฐ์ฒด ๊ฐ„ ์ƒ์†์€ ์—†์Šต๋‹ˆ๋‹ค.\n" "* ๋ฉ”์„œ๋“œ๋Š” `impl`๋ธ”๋ก์— ์ •์˜ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ์Œ์„ ์•Œ๊ฒŒ ํ•˜๊ธฐ์— ์ข‹์€ ์‹œ๊ฐ„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" -" * 0 ํฌ๊ธฐ ๊ตฌ์กฐ์ฒด(์˜ˆ: `struct Foo;`)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ ํŠน์ • ํƒ€์ž…์˜ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  " -"๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" +" * 0 ํฌ๊ธฐ ๊ตฌ์กฐ์ฒด(์˜ˆ: `struct Foo;`)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ ํŠน์ • ํƒ€์ž…์˜ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" " * ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ์—์„œ๋Š” ํ•„๋“œ ์ด๋ฆ„์ด ๋œ ์ค‘์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠœํ”Œ ๊ตฌ์กฐ์ฒด๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.\n" -"* `..peter` ๋ฌธ๋ฒ•์€ ํ•œ ๊ตฌ์กฐ์ฒด์—์„œ ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ€์ดํ•‘" -"ํ•˜๋Š”\n" +"* `..peter` ๋ฌธ๋ฒ•์€ ํ•œ ๊ตฌ์กฐ์ฒด์—์„œ ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•˜๋‚˜ํ•˜๋‚˜ ํƒ€์ดํ•‘ํ•˜๋Š”\n" " ์ˆ˜๊ณ ๋ฅผ ๋œ์–ด์ค๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ๋งจ ๋งˆ์ง€๋ง‰์— ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค." #: src/structs/tuple-structs.md:1 @@ -5277,8 +4987,7 @@ msgstr "" #: src/structs/tuple-structs.md:14 msgid "This is often used for single-field wrappers (called newtypes):" -msgstr "" -"ํŠœํ”Œ ๊ตฌ์กฐ์ฒด๋Š” ์ข…์ข… ๋‹จ์ผ ํ•„๋“œ์˜ ๋ž˜ํผ(wrapper, ๋Ÿฌ์ŠคํŠธ์—์„œ ๋‰ดํƒ€์ž…(newtype)์ด๋ผ๊ณ  ๋ถ€๋ฆ„)๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค." +msgstr "ํŠœํ”Œ ๊ตฌ์กฐ์ฒด๋Š” ์ข…์ข… ๋‹จ์ผ ํ•„๋“œ์˜ ๋ž˜ํผ(wrapper, ๋Ÿฌ์ŠคํŠธ์—์„œ ๋‰ดํƒ€์ž…(newtype)์ด๋ผ๊ณ  ๋ถ€๋ฆ„)๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค." #: src/structs/tuple-structs.md:16 msgid "" @@ -5309,21 +5018,18 @@ msgid "" "}" msgstr "" -#: src/structs/tuple-structs.md:33 src/traits/default.md:36 src/generics/trait-objects.md:86 +#: src/structs/tuple-structs.md:33 src/traits/default.md:36 +#: src/generics/trait-objects.md:86 msgid "```" msgstr "" #: src/structs/tuple-structs.md:37 msgid "" -"* Newtypes are a great way to encode additional information about the value in a primitive type, " -"for example:\n" +"* Newtypes are a great way to encode additional information about the value in a primitive type, for example:\n" " * The number is measured in some units: `Newtons` in the example above.\n" -" * The value passed some validation when it was created, so you no longer have to validate it " -"again at every use: 'PhoneNumber(String)` or `OddNumber(u32)`.\n" -"* Demonstrate how to add a `f64` value to a `Newtons` type by accessing the single field in the " -"newtype.\n" -" * Rust generally doesnโ€™t like inexplicit things, like automatic unwrapping or for instance " -"using booleans as integers.\n" +" * The value passed some validation when it was created, so you no longer have to validate it again at every use: 'PhoneNumber(String)` or `OddNumber(u32)`.\n" +"* Demonstrate how to add a `f64` value to a `Newtons` type by accessing the single field in the newtype.\n" +" * Rust generally doesnโ€™t like inexplicit things, like automatic unwrapping or for instance using booleans as integers.\n" " * Operator overloading is discussed on Day 3 (generics). \n" "" msgstr "" @@ -5332,8 +5038,7 @@ msgstr "" " * ๊ฐ’์ด ์ƒ์„ฑ๋  ๋•Œ ์ด๋ฏธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผ ํ–ˆ์œผ๋ฏ€๋กœ ์ถ”๊ฐ€์ ์ธ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”์—†๋Š” ๊ฒฝ์šฐ:\n" " `PhoneNumber(String)`๋˜๋Š” `OddNumber(u32)`\n" "* `Newtons` ํƒ€์ž…์˜ ๊ฐ’์— `f64` ๊ฐ’์„ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ์„ธ์š”.\n" -" * ๋Ÿฌ์ŠคํŠธ๋Š” ๋Œ€์ฒด๋กœ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ž๋™์œผ๋กœ unwrapํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ์ •" -"์ˆ˜ ๊ฐ’์œผ๋กœ\n" +" * ๋Ÿฌ์ŠคํŠธ๋Š” ๋Œ€์ฒด๋กœ ๋ถ„๋ช…ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ์‹ซ์–ดํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ž๋™์œผ๋กœ unwrapํ•˜๊ฑฐ๋‚˜ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ์ •์ˆ˜ ๊ฐ’์œผ๋กœ\n" " ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋“ค์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.\n" " * ์—ฐ์‚ฐ์ž ์žฌ์ •์˜๋Š” 3์ผ์ฐจ ์ œ๋„ˆ๋ฆญ ๋ถ€๋ถ„์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" "" @@ -5346,8 +5051,7 @@ msgstr "# ํ•„๋“œ ํ• ๋‹น ๋‹จ์ถ• ๋ฌธ๋ฒ•(Field Shorthand Syntax)" msgid "" "If you already have variables with the right names, then you can create the\n" "struct using a shorthand:" -msgstr "" -"๊ตฌ์กฐ์ฒด ํ•„๋“œ์™€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด _์งง์€ ๋ฌธ๋ฒ•_ ์œผ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "๊ตฌ์กฐ์ฒด ํ•„๋“œ์™€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด _์งง์€ ๋ฌธ๋ฒ•_ ์œผ๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/structs/field-shorthand.md:6 src/methods.md:6 msgid "" @@ -5378,9 +5082,7 @@ msgid "" msgstr "" #: src/structs/field-shorthand.md:27 -msgid "" -"The `new` function could be written using `Self` as a type, as it is interchangeable with the " -"struct type name" +msgid "The `new` function could be written using `Self` as a type, as it is interchangeable with the struct type name" msgstr "`new`ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ์ฒ˜๋Ÿผ ๊ตฌ์กฐ์ฒด ์ด๋ฆ„ ๋Œ€์‹  `Self`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค." #: src/structs/field-shorthand.md:29 @@ -5456,25 +5158,19 @@ msgstr "" #: src/enums.md:35 msgid "" "* Enumerations allow you to collect a set of values under one type\n" -"* This page offers an enum type `CoinFlip` with two variants `Heads` and `Tail`. You might note " -"the namespace when using variants.\n" +"* This page offers an enum type `CoinFlip` with two variants `Heads` and `Tail`. You might note the namespace when using variants.\n" "* This might be a good time to compare Structs and Enums:\n" -" * In both, you can have a simple version without fields (unit struct) or one with different " -"types of fields (variant payloads). \n" +" * In both, you can have a simple version without fields (unit struct) or one with different types of fields (variant payloads). \n" " * In both, associated functions are defined within an `impl` block.\n" -" * You could even implement the different variants of an enum with separate structs but then they " -"wouldnโ€™t be the same type as they would if they were all defined in an enum. \n" +" * You could even implement the different variants of an enum with separate structs but then they wouldnโ€™t be the same type as they would if they were all defined in an enum. \n" "" msgstr "" "* ์—ด๊ฑฐํ˜•์€ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.\n" -"* ์œ„์˜ `CoinFlip` ์—ด๊ฑฐํ˜• ํƒ€์ž…์€ `Heads`์™€ `Tail` ๋‘๊ฐ€์ง€ variant๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜• ํƒ€์ž…์˜ variant" -"๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์œ„์˜ `CoinFlip` ์—ด๊ฑฐํ˜• ํƒ€์ž…์€ `Heads`์™€ `Tail` ๋‘๊ฐ€์ง€ variant๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜• ํƒ€์ž…์˜ variant๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" "* ๊ตฌ์กฐ์ฒด์™€ ์—ด๊ฑฐํ˜•์„ ๋น„๊ตํ•ด ๋ณผ๊นŒ์š”?\n" -" * ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜• ๋ชจ๋‘, ํ•„๋“œ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋„ ๊ฐ€๋Šฅ ํ•˜๊ณ , ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ " -"์žˆ์Šต๋‹ˆ๋‹ค.\n" +" * ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜• ๋ชจ๋‘, ํ•„๋“œ๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ๋‹จ์ˆœํ•œ ํ˜•ํƒœ๋„ ๊ฐ€๋Šฅ ํ•˜๊ณ , ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " * ๋‘˜ ๋‹ค ์—ฐ๊ด€ํ•จ์ˆ˜๋ฅผ `impl`๋ธ”๋ก์œผ๋กœ ์ •์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -" * ์—ด๊ฑฐํ˜• ํƒ€์ž…์˜ ๊ฐ variant๋ฅผ ๋ณ„๋„์˜ ๊ตฌ์กฐ์ฒด๋กœ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์ฒ˜๋Ÿผ " -"ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n" +" * ์—ด๊ฑฐํ˜• ํƒ€์ž…์˜ ๊ฐ variant๋ฅผ ๋ณ„๋„์˜ ๊ตฌ์กฐ์ฒด๋กœ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ทธ๋Ÿฌ๋ฉด ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n" "" #: src/enums/variant-payloads.md:1 @@ -5485,9 +5181,7 @@ msgstr "# ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์—ด๊ฑฐํ˜•(Variant Payloads)" msgid "" "You can define richer enums where the variants carry data. You can then use the\n" "`match` statement to extract the data from each variant:" -msgstr "" -"์ข€๋” ๋ณต์žกํ•œ ์—ด๊ฑฐํ˜•์˜ ๊ฒฝ์šฐ variant์— ๋ฐ์ดํ„ฐ(payload)๋ฅผ ํฌํ•จ์‹œํ‚ค๋„ ํ•ฉ๋‹ˆ๋‹ค.๊ฐ variant์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋Š” " -"`match`๋ฌธ์„ ์ด์šฉํ•ด ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค." +msgstr "์ข€๋” ๋ณต์žกํ•œ ์—ด๊ฑฐํ˜•์˜ ๊ฒฝ์šฐ variant์— ๋ฐ์ดํ„ฐ(payload)๋ฅผ ํฌํ•จ์‹œํ‚ค๋„ ํ•ฉ๋‹ˆ๋‹ค.๊ฐ variant์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ๋Š” `match`๋ฌธ์„ ์ด์šฉํ•ด ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค." #: src/enums/variant-payloads.md:6 msgid "" @@ -5530,24 +5224,17 @@ msgstr "" #: src/enums/variant-payloads.md:35 msgid "" -"* In the above example, accessing the `char` in `KeyPress`, or `x` and `y` in `Click` only works " -"within a `match` or an `if let` statement.\n" +"* In the above example, accessing the `char` in `KeyPress`, or `x` and `y` in `Click` only works within a `match` or an `if let` statement.\n" "* `match` and `if let` inspect a hidden discriminant field in the `enum`.\n" "* It is possible to retrieve the discriminant by calling `std::mem::discriminant()`\n" -" * This is useful, for example, if implementing `PartialEq` for structs where comparing field " -"values doesn't affect equality.\n" -"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::Click(Click)` with a top level " -"`struct Click { ... }`. The inlined version cannot implement traits, for example." +" * This is useful, for example, if implementing `PartialEq` for structs where comparing field values doesn't affect equality.\n" +"* `WebEvent::Click { ... }` is not exactly the same as `WebEvent::Click(Click)` with a top level `struct Click { ... }`. The inlined version cannot implement traits, for example." msgstr "" -"* ์œ„์˜ ์˜ˆ์ œ์—์„œ `KeyPress`์˜ `char`, `Cilck`์˜ `x`์™€ `y`์˜ ์ ‘๊ทผ์€ `match`๋‚˜ `if let` ์•ˆ์—์„œ๋งŒ ๋™์ž‘ " -"ํ•ฉ๋‹ˆ๋‹ค.\n" -"* `match`๋Š” ์ฃผ์–ด์ง„ ์—ด๊ฑฐํ˜• ๊ฐ’์ด ์‹ค์ œ๋กœ ์–ด๋–ค variant์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด, ๊ทธ variant์˜ ์ข…๋ฅ˜๊ฐ€ ๊ธฐ๋ก๋œ, " -"์ˆจ๊ฒจ์ง„ ํ•„๋“œ(์‹๋ณ„์ž)์˜ ๊ฐ’์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์œ„์˜ ์˜ˆ์ œ์—์„œ `KeyPress`์˜ `char`, `Cilck`์˜ `x`์™€ `y`์˜ ์ ‘๊ทผ์€ `match`๋‚˜ `if let` ์•ˆ์—์„œ๋งŒ ๋™์ž‘ ํ•ฉ๋‹ˆ๋‹ค.\n" +"* `match`๋Š” ์ฃผ์–ด์ง„ ์—ด๊ฑฐํ˜• ๊ฐ’์ด ์‹ค์ œ๋กœ ์–ด๋–ค variant์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด, ๊ทธ variant์˜ ์ข…๋ฅ˜๊ฐ€ ๊ธฐ๋ก๋œ, ์ˆจ๊ฒจ์ง„ ํ•„๋“œ(์‹๋ณ„์ž)์˜ ๊ฐ’์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" "* `std::mem::discriminant()`๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹๋ณ„์ž๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " * ์ด๋Š” ๊ฐ ํ•„๋“œ ๊ฐ’์„ ๊ตณ์ด ๋น„๊ตํ•  ํ•„์š” ์—†๋Š” ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด `PartialEq` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" -"* `WebEvent::Click { ... }`์€ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ๊ตฌ์กฐ์ฒด `struct Click {...}`๋ฅผ ๋”ฐ๋กœ ์ •์˜ํ•˜๊ณ  `WebEvent::" -"Click(Click)`์ฒ˜๋Ÿผ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ์ •์˜ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `WebEvent::Click { ... }" -"` ๋กœ ์ •์˜ํ•œ ๊ฒฝ์šฐ, ๊ตฌ์กฐ์ฒด ํ˜•ํƒœ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค." +"* `WebEvent::Click { ... }`์€ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ๊ตฌ์กฐ์ฒด `struct Click {...}`๋ฅผ ๋”ฐ๋กœ ์ •์˜ํ•˜๊ณ  `WebEvent::Click(Click)`์ฒ˜๋Ÿผ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ์ •์˜ํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์ง„ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `WebEvent::Click { ... }` ๋กœ ์ •์˜ํ•œ ๊ฒฝ์šฐ, ๊ตฌ์กฐ์ฒด ํ˜•ํƒœ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค." #: src/enums/sizes.md:1 msgid "# Enum Sizes" @@ -5606,8 +5293,7 @@ msgstr "" #: src/enums/sizes.md:37 msgid "* See the [Rust Reference](https://doc.rust-lang.org/reference/type-layout.html)." -msgstr "" -"* ์ž์„ธํ•œ ์‚ฌํ•ญ์€ [๊ณต์‹๋ฌธ์„œ](https://doc.rust-lang.org/reference/type-layout.html)๋ฅผ ํ™•์ธํ•˜์„ธ์š”." +msgstr "* ์ž์„ธํ•œ ์‚ฌํ•ญ์€ [๊ณต์‹๋ฌธ์„œ](https://doc.rust-lang.org/reference/type-layout.html)๋ฅผ ํ™•์ธํ•˜์„ธ์š”." #: src/enums/sizes.md:39 msgid "" @@ -5615,39 +5301,29 @@ msgid "" " \n" "Key Points: \n" " * Internally Rust is using a field (discriminant) to keep track of the enum variant.\n" -" * `Bar` enum demonstrates that there is a way to control the discriminant value and type. If " -"`repr` is removed, the discriminant type takes 2 bytes, becuase 10001 fits 2 bytes.\n" -" * As a niche optimization an enum discriminant is merged with the pointer so that `Option<&Foo>` " -"is the same size as `&Foo`.\n" +" * `Bar` enum demonstrates that there is a way to control the discriminant value and type. If `repr` is removed, the discriminant type takes 2 bytes, becuase 10001 fits 2 bytes.\n" +" * As a niche optimization an enum discriminant is merged with the pointer so that `Option<&Foo>` is the same size as `&Foo`.\n" " * `Option` is another example of tight packing.\n" -" * For [some types](https://doc.rust-lang.org/std/option/#representation), Rust guarantees that " -"`size_of::()` equals `size_of::>()`.\n" -" * Zero-sized types allow for efficient implementation of `HashSet` using `HashMap` with `()` as " -"the value." +" * For [some types](https://doc.rust-lang.org/std/option/#representation), Rust guarantees that `size_of::()` equals `size_of::>()`.\n" +" * Zero-sized types allow for efficient implementation of `HashSet` using `HashMap` with `()` as the value." msgstr "" "
\n" " \n" "ํ‚ค ํฌ์ธํŠธ: \n" "* ๋Ÿฌ์ŠคํŠธ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์—ด๊ฑฐํ˜•์˜ ๊ฐ variant๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ ํ•„๋“œ(์‹๋ณ„์ž)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" -"* `Bar` ํƒ€์ž…์„ ๋ณด๋ฉด ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์ง์ ‘ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.`repr`" -"์„ ์ œ๊ฑฐํ•˜๋ฉด 10001์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ 2๋ฐ”์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹๋ณ„์ž ํƒ€์ž…์ด 2๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.\n" -"* ๋‹ˆ์น˜ ์ตœ์ ํ™”(niche optimization)๋กœ์„œ ์—ด๊ฑฐํ˜•(enum)์˜ ์‹๋ณ„์ž๋Š” ํฌ์ธํ„ฐ์— ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ " -"`Option<&Foo>` ํƒ€์ž…์€ `&Foo`์™€ ๊ฐ™์€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.\n" +"* `Bar` ํƒ€์ž…์„ ๋ณด๋ฉด ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์ง์ ‘ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๊ทธ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.`repr`์„ ์ œ๊ฑฐํ•˜๋ฉด 10001์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ 2๋ฐ”์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹๋ณ„์ž ํƒ€์ž…์ด 2๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋‹ˆ์น˜ ์ตœ์ ํ™”(niche optimization)๋กœ์„œ ์—ด๊ฑฐํ˜•(enum)์˜ ์‹๋ณ„์ž๋Š” ํฌ์ธํ„ฐ์— ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.๊ทธ๋ž˜์„œ `Option<&Foo>` ํƒ€์ž…์€ `&Foo`์™€ ๊ฐ™์€ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.\n" "* `Option์—ญ์‹œ ์ด์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์˜ˆ์ž…๋‹ˆ๋‹ค.\n" -"* [์ผ๋ถ€ ํƒ€์ž…](https://doc.rust-lang.org/std/option/#representation)์˜ ๊ฒฝ์šฐ ๋Ÿฌ์ŠคํŠธ๋Š” `size_of::" -"()`์™€ `size_of::>()`๊ฐ€ ๋™์ผํ•จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. \n" -"* 0ํฌ๊ธฐ ํƒ€์ž… ๋•๋ถ„์— `HashMap`์˜ ๊ฐ’์„ `()`๋กœ ์ง€์ •ํ•˜๋Š” ์‹์œผ๋กœ `HashSet`์„ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ" -"๋‹ค." +"* [์ผ๋ถ€ ํƒ€์ž…](https://doc.rust-lang.org/std/option/#representation)์˜ ๊ฒฝ์šฐ ๋Ÿฌ์ŠคํŠธ๋Š” `size_of::()`์™€ `size_of::>()`๊ฐ€ ๋™์ผํ•จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. \n" +"* 0ํฌ๊ธฐ ํƒ€์ž… ๋•๋ถ„์— `HashMap`์˜ ๊ฐ’์„ `()`๋กœ ์ง€์ •ํ•˜๋Š” ์‹์œผ๋กœ `HashSet`์„ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/enums/sizes.md:49 msgid "" "Example code if you want to show how the bitwise representation *may* look like in practice.\n" -"It's important to note that the compiler provides no guarantees regarding this representation, " -"therefore this is totally unsafe." +"It's important to note that the compiler provides no guarantees regarding this representation, therefore this is totally unsafe." msgstr "" "๋น„ํŠธ ์ˆ˜์ค€์—์„œ ์–ด๋–ค์‹์œผ๋กœ ํ‘œํ˜„๋˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์„ธ์š”.\n" -"์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋น„ํŠธ ํ‘œํ˜„๊นŒ์ง€ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ผญ ์•Œ๋ ค์ฃผ์„ธ" -"์š”." +"์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋น„ํŠธ ํ‘œํ˜„๊นŒ์ง€ ๋ณด์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์€ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์„ ๊ผญ ์•Œ๋ ค์ฃผ์„ธ์š”." #: src/enums/sizes.md:52 msgid "" @@ -5703,11 +5379,8 @@ msgid "" msgstr "" #: src/enums/sizes.md:87 -msgid "" -"More complex example if you want to discuss what happens when we chain more than 256 `Option`s " -"together." -msgstr "" -"์ข€๋” ๋ณต์žกํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. `Option`์„ 256๊ฐœ ์ด์ƒ์œผ๋กœ ์ค‘์ฒฉํ•œ ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgid "More complex example if you want to discuss what happens when we chain more than 256 `Option`s together." +msgstr "์ข€๋” ๋ณต์žกํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. `Option`์„ 256๊ฐœ ์ด์ƒ์œผ๋กœ ์ค‘์ฒฉํ•œ ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/enums/sizes.md:89 msgid "" @@ -5801,38 +5474,26 @@ msgstr "" msgid "" "Key Points:\n" "* It can be helpful to introduce methods by comparing them to functions.\n" -" * Methods are called on an instance of a type (such as a struct or enum), the first parameter " -"represents the instance as `self`.\n" -" * Developers may choose to use methods to take advantage of method receiver syntax and to help " -"keep them more organized. By using methods we can keep all the implementation code in one " -"predictable place.\n" +" * Methods are called on an instance of a type (such as a struct or enum), the first parameter represents the instance as `self`.\n" +" * Developers may choose to use methods to take advantage of method receiver syntax and to help keep them more organized. By using methods we can keep all the implementation code in one predictable place.\n" "* Point out the use of the keyword `self`, a method receiver. \n" -" * Show that it is an abbreviated term for `self:&Self` and perhaps show how the struct name " -"could also be used. \n" -" * Explain that `Self` is a type alias for the type the `impl` block is in and can be used " -"elsewhere in the block.\n" -" * Note how `self` is used like other structs and dot notation can be used to refer to individual " -"fields.\n" -" * This might be a good time to demonstrate how the `&self` differs from `self` by modifying the " -"code and trying to run say_hello twice. \n" +" * Show that it is an abbreviated term for `self:&Self` and perhaps show how the struct name could also be used. \n" +" * Explain that `Self` is a type alias for the type the `impl` block is in and can be used elsewhere in the block.\n" +" * Note how `self` is used like other structs and dot notation can be used to refer to individual fields.\n" +" * This might be a good time to demonstrate how the `&self` differs from `self` by modifying the code and trying to run say_hello twice. \n" "* We describe the distinction between method receivers next.\n" " \n" "
" msgstr "" "ํ‚ค ํฌ์ธํŠธ: \n" "* ๋ฉ”์„œ๋“œ๋ฅผ ํ•จ์ˆ˜์™€ ๋น„๊ตํ•˜์—ฌ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ๋„ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -" * ๋ฉ”์„œ๋“œ๋Š” ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜•๊ณผ ๊ฐ™์€ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ถœ ๋˜๋ฉฐ, ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฉ”ํ„ฐ)๋Š” ์ธ์Šค" -"ํ„ด์Šค๋ฅผ `self`๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.\n" -" * ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด receiver ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ์ข€๋” ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”" -"์„œ๋“œ๋“ค์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์œ„์น˜์— ๋ชจ์—ฌ ์žˆ์œผ๋‹ˆ ์ฐพ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.\n" +" * ๋ฉ”์„œ๋“œ๋Š” ๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜•๊ณผ ๊ฐ™์€ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ถœ ๋˜๋ฉฐ, ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜(ํŒŒ๋ผ๋ฉ”ํ„ฐ)๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ `self`๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.\n" +" * ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด receiver ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ์ข€๋” ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋“ค์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์œ„์น˜์— ๋ชจ์—ฌ ์žˆ์œผ๋‹ˆ ์ฐพ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.\n" "* ๋ฉ”์„œ๋“œ receiver์ธ `self` ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ์„ ์–ธ๊ธ‰ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" -" * ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ `self: &Self`์˜ ์ค„์ธ ๋ฒ„์ „์ž„์„ ์•Œ๋ ค์ฃผ๊ณ , ๊ตฌ์กฐ์ฒด์˜ ์ด๋ฆ„์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”" -"์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.\n" +" * ์˜ˆ์ œ์˜ ๊ฒฝ์šฐ `self: &Self`์˜ ์ค„์ธ ๋ฒ„์ „์ž„์„ ์•Œ๋ ค์ฃผ๊ณ , ๊ตฌ์กฐ์ฒด์˜ ์ด๋ฆ„์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.\n" " * `impl` ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ๋Š” `Self`๊ฐ€ ํ•ด๋‹น ํƒ€์ž…์˜ ์ด๋ฆ„ ๋Œ€์šฉ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Œ์„ ์•Œ๋ ค์ฃผ์„ธ์š”.\n" -" * ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์  ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋“ฏ์ด `self`์— ์  ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„ ํ•„๋“œ๋“ค์„ ์ ‘๊ทผ" -"ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -" * `say_hello` ํ•จ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ ํ˜ธ์ถœ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ `&self`์™€ `self`๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ณด์—ฌ์ฃผ๋Š” " -"๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.\n" +" * ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ๋ฅผ ์ ‘๊ทผํ•  ๋•Œ ์  ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋“ฏ์ด `self`์— ์  ํ‘œ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„ ํ•„๋“œ๋“ค์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +" * `say_hello` ํ•จ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ ํ˜ธ์ถœ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ `&self`์™€ `self`๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.\n" "* ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ์—์„œ receiver์˜ ๊ตฌ๋ถ„์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.\n" "" @@ -5844,9 +5505,7 @@ msgstr "# ๋ฉ”์„œ๋“œ ๋ฆฌ์‹œ๋ฒ„(Receiver)" msgid "" "The `&self` above indicates that the method borrows the object immutably. There\n" "are other possible receivers for a method:" -msgstr "" -"`&self`๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๋ฆฌ์‹œ๋ฒ„๋Š” ๋‹ค์Œ์˜ ํ˜•ํƒœ๋“ค์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ" -"๋‹ค." +msgstr "`&self`๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด๋ฅผ ๋ถˆ๋ณ€ํ•˜๊ฒŒ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๋ฆฌ์‹œ๋ฒ„๋Š” ๋‹ค์Œ์˜ ํ˜•ํƒœ๋“ค์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." #: src/methods/receiver.md:6 msgid "" @@ -5863,33 +5522,24 @@ msgid "" "* No receiver: this becomes a static method on the struct. Typically used to\n" " create constructors which are called `new` by convention." msgstr "" -"* `&self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๊ณต์œ ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ" -"์ถœ ๋’ค์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* `&mut self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ์œ ์ผํ•œ ๊ฐ€๋ณ€ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ" -"์ถœ ๋’ค์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* `self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ์ฒด๋Š” ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๊ฐ€ " -"๊ฐ์ฒด๋ฅผ ์†Œ์œ ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋”ฐ๋ผ์„œ ๋ช…์‹œ์ ์œผ๋กœ ์†Œ์œ ๊ถŒ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ์™€ ํ•จ๊ป˜ ๊ฐ" -"์ฒด๋Š” drop(ํ•ด์ œ)๋ฉ๋‹ˆ๋‹ค.\n" -"* `mut self`: ์œ„์™€ ๋™์ผํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๋ฉด์„œ ๋™์‹œ์— ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ" -"๋‹ค. ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.\n" -"* ๋ฆฌ์‹œ๋ฒ„ ์—†์Œ: ๊ตฌ์กฐ์ฒด์˜ ์ •์  ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ƒ์„ฑ์ž๋Š” ํ”ํžˆ " -"`new`๋ผ๊ณ  ์ด๋ฆ„๋ถ™์ž…๋‹ˆ๋‹ค." +"* `&self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๊ณต์œ ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ๋’ค์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* `&mut self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ์œ ์ผํ•œ ๊ฐ€๋ณ€ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋นŒ๋ ค์˜ด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ ๋’ค์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* `self`: ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ์ฒด๋Š” ํ˜ธ์ถœ์ž๋กœ๋ถ€ํ„ฐ ๋ฉ”์†Œ๋“œ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์†Œ์œ ํ•˜๊ฒŒ ๋˜๋ฉฐ ๋”ฐ๋ผ์„œ ๋ช…์‹œ์ ์œผ๋กœ ์†Œ์œ ๊ถŒ์„ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ์™€ ํ•จ๊ป˜ ๊ฐ์ฒด๋Š” drop(ํ•ด์ œ)๋ฉ๋‹ˆ๋‹ค.\n" +"* `mut self`: ์œ„์™€ ๋™์ผํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๋ฉด์„œ ๋™์‹œ์— ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.\n" +"* ๋ฆฌ์‹œ๋ฒ„ ์—†์Œ: ๊ตฌ์กฐ์ฒด์˜ ์ •์  ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ, ์ƒ์„ฑ์ž๋Š” ํ”ํžˆ `new`๋ผ๊ณ  ์ด๋ฆ„๋ถ™์ž…๋‹ˆ๋‹ค." #: src/methods/receiver.md:19 msgid "" "Beyond variants on `self`, there are also\n" "[special wrapper types](https://doc.rust-lang.org/reference/special-types-and-traits.html)\n" "allowed to be receiver types, such as `Box`." -msgstr "" -"`self`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด๊ฐ™์€ ๋ณ€ํ˜•๋“ค ์™ธ์—๋„ `Box`์™€ ๊ฐ™์ด ๋ฆฌ์‹œ๋ฒ„ ํƒ€์ž…์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” [ํŠน๋ณ„ํ•œ ๋ž˜ํผ ํƒ€" -"์ž…](https://doc.rust-lang.org/reference/special-types-and-traits.html)์ด ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "`self`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด๊ฐ™์€ ๋ณ€ํ˜•๋“ค ์™ธ์—๋„ `Box`์™€ ๊ฐ™์ด ๋ฆฌ์‹œ๋ฒ„ ํƒ€์ž…์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” [ํŠน๋ณ„ํ•œ ๋ž˜ํผ ํƒ€์ž…](https://doc.rust-lang.org/reference/special-types-and-traits.html)์ด ์žˆ์Šต๋‹ˆ๋‹ค." #: src/methods/receiver.md:23 msgid "" "
\n" " \n" -"Consider emphasizing \"shared and immutable\" and \"unique and mutable\". These constraints always " -"come\n" +"Consider emphasizing \"shared and immutable\" and \"unique and mutable\". These constraints always come\n" "together in Rust due to borrow checker rules, and `self` is no exception. It isn't possible to\n" "reference a struct from multiple locations and call a mutating (`&mut self`) method on it.\n" " \n" @@ -5897,9 +5547,7 @@ msgid "" msgstr "" "
\n" " \n" -" \"๊ณต์œ ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€\"๊ณผ \"์œ ์ผํ•œ ๊ฐ€๋ณ€\" ๋ถ€๋ถ„์€ ๊ฐ•์กฐํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ฝ์€ ๋Ÿฌ์ŠคํŠธ์˜ ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ" -"(borrow checker) ๊ทœ์น™์œผ๋กœ ๋Š˜ ๋ถ™์–ด๋‹ค๋‹™๋‹ˆ๋‹ค. `self`๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜" -"๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š”(`&mut self`๋ฅผ ๋ฆฌ์‹œ๋ฒ„๋กœ ํ•˜๋Š”) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" +" \"๊ณต์œ ๊ฐ€๋Šฅํ•œ ๋ถˆ๋ณ€\"๊ณผ \"์œ ์ผํ•œ ๊ฐ€๋ณ€\" ๋ถ€๋ถ„์€ ๊ฐ•์กฐํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ฝ์€ ๋Ÿฌ์ŠคํŠธ์˜ ๋นŒ๋ฆผ ๊ฒ€์‚ฌ๊ธฐ(borrow checker) ๊ทœ์น™์œผ๋กœ ๋Š˜ ๋ถ™์–ด๋‹ค๋‹™๋‹ˆ๋‹ค. `self`๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ๊ตฌ์กฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š”(`&mut self`๋ฅผ ๋ฆฌ์‹œ๋ฒ„๋กœ ํ•˜๋Š”) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" "
" #: src/methods/example.md:1 src/concurrency/shared_state/example.md:1 @@ -5989,28 +5637,19 @@ msgid "" " \n" "Key Points:\n" "* All four methods here use a different method receiver.\n" -" * You can point out how that changes what the function can do with the variable values and if/" -"how it can be used again in `main`.\n" +" * You can point out how that changes what the function can do with the variable values and if/how it can be used again in `main`.\n" " * You can showcase the error that appears when trying to call `finish` twice.\n" -"* Note that although the method receivers are different, the non-static functions are called the " -"same way in the main body. Rust enables automatic referencing and dereferencing when calling " -"methods. Rust automatically adds in the `&`, `*`, `muts` so that that object matches the method " -"signature.\n" -"* You might point out that `print_laps` is using a vector that is iterated over. We describe " -"vectors in more detail in the afternoon. " +"* Note that although the method receivers are different, the non-static functions are called the same way in the main body. Rust enables automatic referencing and dereferencing when calling methods. Rust automatically adds in the `&`, `*`, `muts` so that that object matches the method signature.\n" +"* You might point out that `print_laps` is using a vector that is iterated over. We describe vectors in more detail in the afternoon. " msgstr "" "
\n" " \n" "ํ‚ค ํฌ์ธํŠธ:\n" "* 4๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฉ”์„œ๋“œ receiver์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.\n" -" * receiver ์œ ํ˜•์— ๋”ฐ๋ผ ํ•จ์ˆ˜๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ๋‹ฌ๋ผ์ง€๊ณ , ๋˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋’ค `main`์—์„œ ํ•ด๋‹น ๊ฐ" -"์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋„ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜์„ธ์š”.\n" +" * receiver ์œ ํ˜•์— ๋”ฐ๋ผ ํ•จ์ˆ˜๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ๋‹ฌ๋ผ์ง€๊ณ , ๋˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๋’ค `main`์—์„œ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋„ ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜์„ธ์š”.\n" " * `finish`๋ฅผ ๋‘๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* ๋น„๋ก ๋ฉ”์„œ๋“œ receiver๋Š” ๋‹ค๋ฅด์ง€๋งŒ main ํ•จ์ˆ˜์—์„œ ๋น„ ์ •์  ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ๋ฉ”" -"์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ฐธ์กฐ/์—ญ์ฐธ์กฐ(๋”ฐ๋ผ๊ฐ€๊ธฐ)๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ๊ฐ์ฒด์™€ ๋งค์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์„œ" -"๋กœ ๋งค์น˜๋˜๋„๋ก ๊ฐ์ฒด์— `&`, `*`, `muts`๋ฅผ ์ž๋™์œผ๋กœ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.\n" -"* `print_laps`ํ•จ์ˆ˜์—์„œ ๋ฒกํ„ฐ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฒกํ„ฐ๋Š” ์˜คํ›„ ๊ฐ•์˜" -"์—์„œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." +"* ๋น„๋ก ๋ฉ”์„œ๋“œ receiver๋Š” ๋‹ค๋ฅด์ง€๋งŒ main ํ•จ์ˆ˜์—์„œ ๋น„ ์ •์  ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅด๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ฐธ์กฐ/์—ญ์ฐธ์กฐ(๋”ฐ๋ผ๊ฐ€๊ธฐ)๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ๊ฐ์ฒด์™€ ๋งค์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์„œ๋กœ ๋งค์น˜๋˜๋„๋ก ๊ฐ์ฒด์— `&`, `*`, `muts`๋ฅผ ์ž๋™์œผ๋กœ ๋ถ™์—ฌ์ค๋‹ˆ๋‹ค.\n" +"* `print_laps`ํ•จ์ˆ˜์—์„œ ๋ฒกํ„ฐ๋ฅผ ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฒกํ„ฐ๋Š” ์˜คํ›„ ๊ฐ•์˜์—์„œ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/pattern-matching.md:1 msgid "# Pattern Matching" @@ -6020,9 +5659,7 @@ msgstr "# ํŒจํ„ด ๋งค์นญ" msgid "" "The `match` keyword let you match a value against one or more _patterns_. The\n" "comparisons are done from top to bottom and the first match wins." -msgstr "" -"`match`ํ‚ค์›Œ๋“œ๋Š” ๊ฐ’์„ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ _ํŒจํ„ด_๊ณผ ๋งค์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งจ ์œ„ ํŒจํ„ด๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋งค์น˜๋˜๋Š”์ง€ ๊ฒ€" -"์‚ฌํ•˜๋ฉฐ, ์ฒ˜์Œ์œผ๋กœ ๋งค์น˜๋˜๋Š” ํŒจํ„ด์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค." +msgstr "`match`ํ‚ค์›Œ๋“œ๋Š” ๊ฐ’์„ ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ _ํŒจํ„ด_๊ณผ ๋งค์น˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งจ ์œ„ ํŒจํ„ด๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋งค์น˜๋˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋ฉฐ, ์ฒ˜์Œ์œผ๋กœ ๋งค์น˜๋˜๋Š” ํŒจํ„ด์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค." #: src/pattern-matching.md:6 msgid "The patterns can be simple values, similarly to `switch` in C and C++:" @@ -6061,11 +5698,9 @@ msgid "" " * `..` can expand as much as it needs to be\n" " * `1..=5` represents an inclusive range\n" " * `_` is a wild card\n" -"* It can be useful to show how binding works, by for instance replacing a wildcard character with " -"a variable, or removing the quotes around `q`.\n" +"* It can be useful to show how binding works, by for instance replacing a wildcard character with a variable, or removing the quotes around `q`.\n" "* You can demonstrate matching on a reference.\n" -"* This might be a good time to bring up the concept of irrefutable patterns, as the term can show " -"up in error messages.\n" +"* This might be a good time to bring up the concept of irrefutable patterns, as the term can show up in error messages.\n" " \n" "
" msgstr "" @@ -6077,11 +5712,9 @@ msgstr "" " * `..`: ํ•„์š”ํ•œ ๋งŒํผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.\n" " * `1..=5`: ๋ ๊ฐ’(์—ฌ๊ธฐ์„œ๋Š” 5)์„ ํฌํ•จํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.\n" " * `_`: ์™€์ผ๋“œ์นด๋“œ์ž…๋‹ˆ๋‹ค.\n" -"* ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ `q`์˜ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋ฐ”์ธ๋”ฉ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™" -"ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ `q`์˜ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋ฐ”์ธ๋”ฉ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์ฐธ์กฐ๋ฅผ ๋งค์นญํ•˜๋Š” ๊ฒƒ๋„ ์‹œ์—ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— \"๋ฐ˜๋ฐ• ๋ถˆ๊ฐ€๋Šฅ ํŒจํ„ด(irrefutable pattern)\"์ด๋ž€ ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ทธ ์˜" -"๋ฏธ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" +"* ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— \"๋ฐ˜๋ฐ• ๋ถˆ๊ฐ€๋Šฅ ํŒจํ„ด(irrefutable pattern)\"์ด๋ž€ ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ทธ ์˜๋ฏธ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" "\n" "
" @@ -6093,9 +5726,7 @@ msgstr "# ์—ด๊ฑฐํ˜• ๋ถ„ํ•ด(์—ญ๊ตฌ์กฐํ™”)" msgid "" "Patterns can also be used to bind variables to parts of your values. This is how\n" "you inspect the structure of your types. Let us start with a simple `enum` type:" -msgstr "" -"๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜• ๊ฐ’์˜ ์ผ๋ถ€๋ฅผ ํŒจํ„ด ๋งค์น˜๋ฅผ ํ†ตํ•ด ๋ณ€์ˆ˜์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ `enum` ํƒ€์ž…์„ ๋จผ" -"์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค." +msgstr "๊ตฌ์กฐ์ฒด๋‚˜ ์—ด๊ฑฐํ˜• ๊ฐ’์˜ ์ผ๋ถ€๋ฅผ ํŒจํ„ด ๋งค์น˜๋ฅผ ํ†ตํ•ด ๋ณ€์ˆ˜์— ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ `enum` ํƒ€์ž…์„ ๋จผ์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค." #: src/pattern-matching/destructuring-enums.md:6 msgid "" @@ -6155,8 +5786,7 @@ msgid "" "arm, `half` is bound to the value inside the `Ok` variant. In the second arm,\n" "`msg` is bound to the error message." msgstr "" -"`match`๊ตฌ๋ฌธ์—์„œ `divide_in_two`ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” `Result` ๊ฐ’์„ ๋‘ ๊ฐœ์˜ ํŒ”(ํ˜น์€ ๊ฐ€์ง€)๋กœ _๋ถ„ํ•ด" -"(destructure)_ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.\n" +"`match`๊ตฌ๋ฌธ์—์„œ `divide_in_two`ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” `Result` ๊ฐ’์„ ๋‘ ๊ฐœ์˜ ํŒ”(ํ˜น์€ ๊ฐ€์ง€)๋กœ _๋ถ„ํ•ด(destructure)_ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.\n" "์ฒซ๋ฒˆ์งธ ํŒ”์—์„œ `half`๋Š” `Ok` variant์— ๋‹ด๊ธด ๊ฐ’์œผ๋กœ ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค.\n" "๋‘๋ฒˆ์งธ ํŒ”์—์„œ `msg`๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ๋ฌธ์ž์—ด์— ๋ฐ”์ธ๋”ฉ๋ฉ๋‹ˆ๋‹ค." @@ -6164,14 +5794,11 @@ msgstr "" msgid "" "Key points:\n" "* The `if`/`else` expression is returning an enum that is later unpacked with a `match`.\n" -"* You can try adding a third variant to the enum definition and displaying the errors when running " -"the code. Point out the places where your code is now inexhaustive and how the compiler tries to " -"give you hints." +"* You can try adding a third variant to the enum definition and displaying the errors when running the code. Point out the places where your code is now inexhaustive and how the compiler tries to give you hints." msgstr "" "ํ‚ค ํฌ์ธํŠธ:\n" "* `if`/`else` ํ‘œํ˜„์‹์€ ์—ด๊ฑฐํ˜•์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ด ๊ฐ’์€ ๋‚˜์ค‘์— `match`๋กœ ๋ถ„ํ•ด๋ฉ๋‹ˆ๋‹ค.\n" -"* ์—ด๊ฑฐํ˜•์— ์„ธ๋ฒˆ์งธ variant๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ด๋ณด์„ธ์š”. ์ฝ”๋“œ ์–ด๋Š ๋ถ€๋ถ„์— ๋ˆ„๋ฝ์ด " -"์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ํžŒํŠธ๋ฅผ ์ฃผ๋Š”์ง€ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”." +"* ์—ด๊ฑฐํ˜•์— ์„ธ๋ฒˆ์งธ variant๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•ด๋ณด์„ธ์š”. ์ฝ”๋“œ ์–ด๋Š ๋ถ€๋ถ„์— ๋ˆ„๋ฝ์ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ด๋–ค ์‹์œผ๋กœ ํžŒํŠธ๋ฅผ ์ฃผ๋Š”์ง€ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”." #: src/pattern-matching/destructuring-structs.md:1 msgid "# Destructuring Structs" @@ -6321,9 +5948,7 @@ msgstr "# ๋งค์น˜ ๊ฐ€๋“œ" msgid "" "When matching, you can add a _guard_ to a pattern. This is an arbitrary Boolean\n" "expression which will be executed if the pattern matches:" -msgstr "" -"ํŒจํ„ด ๋’ค์— ๊ฐ€๋“œ(guard, ์กฐ๊ฑด์‹)๋ฅผ ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋Š” ํŒจํ„ด์ด ๋งค์น˜๋˜๋ฉด ์ถ”๊ฐ€๋กœ ๋”ฐ์ ธ๋ณด๋Š” ๋ถˆ๋ฆฌ์–ธ " -"ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค." +msgstr "ํŒจํ„ด ๋’ค์— ๊ฐ€๋“œ(guard, ์กฐ๊ฑด์‹)๋ฅผ ๋ง๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ๋Š” ํŒจํ„ด์ด ๋งค์น˜๋˜๋ฉด ์ถ”๊ฐ€๋กœ ๋”ฐ์ ธ๋ณด๋Š” ๋ถˆ๋ฆฌ์–ธ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค." #: src/pattern-matching/match-guards.md:6 msgid "" @@ -6358,23 +5983,17 @@ msgstr "" #: src/pattern-matching/match-guards.md:22 msgid "" "Key Points:\n" -"* Match guards as a separate syntax feature are important and necessary when we wish to concisely " -"express more complex ideas than patterns alone would allow.\n" -"* They are not the same as separate `if` expression inside of the match arm. An `if` expression " -"inside of the branch block (after `=>`) happens after the match arm is selected. Failing the `if` " -"condition inside of that block won't result in other arms\n" +"* Match guards as a separate syntax feature are important and necessary when we wish to concisely express more complex ideas than patterns alone would allow.\n" +"* They are not the same as separate `if` expression inside of the match arm. An `if` expression inside of the branch block (after `=>`) happens after the match arm is selected. Failing the `if` condition inside of that block won't result in other arms\n" "of the original `match` expression being considered. \n" "* You can use the variables defined in the pattern in your if expression.\n" "* The condition defined in the guard applies to every expression in a pattern with an `|`.\n" "" msgstr "" "ํ‚ค ํฌ์ธํŠธ:\n" -"* ๋งค์น˜ ๊ฐ€๋“œ๋Š” ๋ณ„๋„์˜ ๋ฌธ๋ฒ• ์š”์†Œ๋กœ์„œ ํŒจํ„ด ์ž์ฒด๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ณต์žกํ•œ ๊ฒฝ์šฐ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ " -"์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" -"* ๋งค์น˜์˜ ๊ฐ ํŒ”(ํ˜น์€ ๊ฐ€์ง€) ์•ˆ์— ๋”ฐ๋กœ `if`๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋งค์น˜ ๊ฐ€์ง€์˜ `=>` ๋’ค์— ์‚ฌ์šฉ๋œ `if` " -"ํ‘œํ˜„์‹์€ ํ•ด๋‹น\n" -" ๊ฐ€์ง€๊ฐ€ ์„ ํƒ๋œ ๋‹ค์Œ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ `if` ์กฐ๊ฑด์ด ์‹คํŒจํ•˜๋”๋ผ๋„ ์›๋ž˜ `match`์˜ ๋‹ค๋ฅธ ๊ฐ€์ง€" -"๋Š” ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" +"* ๋งค์น˜ ๊ฐ€๋“œ๋Š” ๋ณ„๋„์˜ ๋ฌธ๋ฒ• ์š”์†Œ๋กœ์„œ ํŒจํ„ด ์ž์ฒด๋งŒ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ๋ณต์žกํ•œ ๊ฒฝ์šฐ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋งค์น˜์˜ ๊ฐ ํŒ”(ํ˜น์€ ๊ฐ€์ง€) ์•ˆ์— ๋”ฐ๋กœ `if`๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋งค์น˜ ๊ฐ€์ง€์˜ `=>` ๋’ค์— ์‚ฌ์šฉ๋œ `if` ํ‘œํ˜„์‹์€ ํ•ด๋‹น\n" +" ๊ฐ€์ง€๊ฐ€ ์„ ํƒ๋œ ๋‹ค์Œ์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๊ธฐ์„œ `if` ์กฐ๊ฑด์ด ์‹คํŒจํ•˜๋”๋ผ๋„ ์›๋ž˜ `match`์˜ ๋‹ค๋ฅธ ๊ฐ€์ง€๋Š” ๊ณ ๋ ค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" "* ํŒจํ„ด์— ์ •์˜๋œ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋“œ์˜ ํ‘œํ˜„์‹์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ๊ฐ€๋“œ์— ์ •์˜๋œ ์กฐ๊ฑด์€ `|` ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒจํ„ด์˜ ๋ชจ๋“  ํ‘œํ˜„์‹์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" "" @@ -6513,8 +6132,7 @@ msgid "" "tests pass:" msgstr "" "์šฐ๋ฆฌ๋Š” ๋ช‡๊ฐœ์˜ ๊ผญ์ง€์ ์„ ๊ฐ€์ง„ ๋‹ค๊ฐํ˜•์„ ํ‘œํ˜„ํ•˜๋Š” `Polygon` ๊ตฌ์กฐ์ฒด๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. \n" -"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•ด์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋„๋ก ๋น ์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์‹œ๋ฉด " -"๋ฉ๋‹ˆ๋‹ค: " +"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•ด์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋„๋ก ๋น ์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค: " #: src/exercises/day-2/points-polygons.md:7 src/exercises/day-2/luhn.md:23 #: src/exercises/day-2/strings-iterators.md:12 @@ -6581,14 +6199,16 @@ msgid "" " use super::*;" msgstr "" -#: src/exercises/day-2/points-polygons.md:44 src/exercises/day-2/solutions-morning.md:165 +#: src/exercises/day-2/points-polygons.md:44 +#: src/exercises/day-2/solutions-morning.md:165 msgid "" " fn round_two_digits(x: f64) -> f64 {\n" " (x * 100.0).round() / 100.0\n" " }" msgstr "" -#: src/exercises/day-2/points-polygons.md:48 src/exercises/day-2/solutions-morning.md:169 +#: src/exercises/day-2/points-polygons.md:48 +#: src/exercises/day-2/solutions-morning.md:169 msgid "" " #[test]\n" " fn test_point_magnitude() {\n" @@ -6597,7 +6217,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-2/points-polygons.md:54 src/exercises/day-2/solutions-morning.md:175 +#: src/exercises/day-2/points-polygons.md:54 +#: src/exercises/day-2/solutions-morning.md:175 msgid "" " #[test]\n" " fn test_point_dist() {\n" @@ -6607,7 +6228,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-2/points-polygons.md:61 src/exercises/day-2/solutions-morning.md:182 +#: src/exercises/day-2/points-polygons.md:61 +#: src/exercises/day-2/solutions-morning.md:182 msgid "" " #[test]\n" " fn test_point_add() {\n" @@ -6617,7 +6239,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-2/points-polygons.md:68 src/exercises/day-2/solutions-morning.md:189 +#: src/exercises/day-2/points-polygons.md:68 +#: src/exercises/day-2/solutions-morning.md:189 msgid "" " #[test]\n" " fn test_polygon_left_most_point() {\n" @@ -6625,7 +6248,8 @@ msgid "" " let p2 = Point::new(16, 16);" msgstr "" -#: src/exercises/day-2/points-polygons.md:73 src/exercises/day-2/solutions-morning.md:194 +#: src/exercises/day-2/points-polygons.md:73 +#: src/exercises/day-2/solutions-morning.md:194 msgid "" " let mut poly = Polygon::new();\n" " poly.add_point(p1);\n" @@ -6634,7 +6258,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-2/points-polygons.md:79 src/exercises/day-2/solutions-morning.md:200 +#: src/exercises/day-2/points-polygons.md:79 +#: src/exercises/day-2/solutions-morning.md:200 msgid "" " #[test]\n" " fn test_polygon_iter() {\n" @@ -6642,14 +6267,16 @@ msgid "" " let p2 = Point::new(16, 16);" msgstr "" -#: src/exercises/day-2/points-polygons.md:84 src/exercises/day-2/solutions-morning.md:205 +#: src/exercises/day-2/points-polygons.md:84 +#: src/exercises/day-2/solutions-morning.md:205 msgid "" " let mut poly = Polygon::new();\n" " poly.add_point(p1);\n" " poly.add_point(p2);" msgstr "" -#: src/exercises/day-2/points-polygons.md:88 src/exercises/day-2/solutions-morning.md:209 +#: src/exercises/day-2/points-polygons.md:88 +#: src/exercises/day-2/solutions-morning.md:209 msgid "" " let points = poly.iter().cloned().collect::>();\n" " assert_eq!(points, vec![Point::new(12, 13), Point::new(16, 16)]);\n" @@ -6689,24 +6316,20 @@ msgstr "" msgid "" "Since the method signatures are missing from the problem statements, the key part\n" "of the exercise is to specify those correctly. You don't have to modify the tests." -msgstr "" -"๋ˆ„๋ฝ๋œ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜์ •ํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค." +msgstr "๋ˆ„๋ฝ๋œ ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜์ •ํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค." #: src/exercises/day-2/points-polygons.md:120 msgid "" "Other interesting parts of the exercise:\n" " \n" -"* Derive a `Copy` trait for some structs, as in tests the methods sometimes don't borrow their " -"arguments.\n" -"* Discover that `Add` trait must be implemented for two objects to be addable via \"+\". Note that " -"we do not discuss generics until Day 3." +"* Derive a `Copy` trait for some structs, as in tests the methods sometimes don't borrow their arguments.\n" +"* Discover that `Add` trait must be implemented for two objects to be addable via \"+\". Note that we do not discuss generics until Day 3." msgstr "" "์—ฐ์Šต๋ฌธ์ œ์˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„:\n" " \n" "* ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์–ด๋–ค ๋ฉ”์„œ๋“œ๋“ค์€ ์ธ์ž๋ฅผ borrowํ•˜๋Š” ๋Œ€์‹  `Copy` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.\n" " ๊ตฌ์กฐ์ฒด๊ฐ€ `Copy` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ƒ์†(derive)ํ•˜๋„๋ก ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.\n" -"* \"+\"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ์ฒด๋ฅผ ์„œ๋กœ ๋”ํ•˜๋ ค๋ฉด `Add` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” 3์ผ์ฐจ์— ๋‹ค๋ฃฐ ๋‚ด์šฉ" -"์ž…๋‹ˆ๋‹ค." +"* \"+\"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ์ฒด๋ฅผ ์„œ๋กœ ๋”ํ•˜๋ ค๋ฉด `Add` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” 3์ผ์ฐจ์— ๋‹ค๋ฃฐ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค." #: src/control-flow.md:1 msgid "# Control Flow" @@ -6718,9 +6341,7 @@ msgid "" "evaluate one of two blocks, but the blocks can have a value which then becomes\n" "the value of the `if` expression. Other control flow expressions work similarly\n" "in Rust." -msgstr "" -"์•ž์—์„œ ์‚ดํŽด๋ณธ ๋ฐ”์™€ ๊ฐ™์ด ๋Ÿฌ์ŠคํŠธ์—์„œ `if`๋Š” ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‘ ๋ธ”๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๊ทธ " -"๊ฒฐ๊ณผ๊ฐ’์ด `if` ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ๋ฆ„์ œ์–ด ํ‘œํ˜„์‹๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. " +msgstr "์•ž์—์„œ ์‚ดํŽด๋ณธ ๋ฐ”์™€ ๊ฐ™์ด ๋Ÿฌ์ŠคํŠธ์—์„œ `if`๋Š” ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‘ ๋ธ”๋ก ์ค‘ ํ•˜๋‚˜๋ฅผ ํ‰๊ฐ€ํ•˜๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์ด `if` ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ๋ฆ„์ œ์–ด ํ‘œํ˜„์‹๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. " #: src/control-flow/blocks.md:1 msgid "# Blocks" @@ -6784,8 +6405,7 @@ msgstr "์œ„์˜ `main` ํ•จ์ˆ˜๋Š” ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด `;`๋กœ ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ msgid "" "Key Points:\n" "* The point of this slide is to show that blocks have a type and value in Rust. \n" -"* You can show how the value of the block changes by changing the last line in the block. For " -"instance, adding/removing a semicolon or using a `return`.\n" +"* You can show how the value of the block changes by changing the last line in the block. For instance, adding/removing a semicolon or using a `return`.\n" " \n" "" msgstr "" @@ -6839,13 +6459,11 @@ msgstr "" #: src/control-flow/if-expressions.md:31 msgid "" -"Because `if` is an expression and must have a particular type, both of its branch blocks must have " -"the same type. Consider showing what happens if you add `;` after `x / 2` in the second example.\n" +"Because `if` is an expression and must have a particular type, both of its branch blocks must have the same type. Consider showing what happens if you add `;` after `x / 2` in the second example.\n" " \n" "" msgstr "" -"`if`๋Š” ํ‘œํ˜„์‹์ด๊ณ  ํƒ€์ž…์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฏ€๋กœ ๋ถ„๊ธฐ ๋ธ”๋ก์€ ๋ชจ๋‘ ๊ฐ™์€ ํƒ€์ž…์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘๋ฒˆ์งธ ์˜ˆ์‹œ์˜ " -"`x / 2` ๋’ค์— `;`๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. \n" +"`if`๋Š” ํ‘œํ˜„์‹์ด๊ณ  ํƒ€์ž…์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฏ€๋กœ ๋ถ„๊ธฐ ๋ธ”๋ก์€ ๋ชจ๋‘ ๊ฐ™์€ ํƒ€์ž…์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘๋ฒˆ์งธ ์˜ˆ์‹œ์˜ `x / 2` ๋’ค์— `;`๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. \n" "" #: src/control-flow/if-let-expressions.md:1 @@ -6870,7 +6488,8 @@ msgid "" "```" msgstr "" -#: src/control-flow/if-let-expressions.md:16 src/control-flow/while-let-expressions.md:21 +#: src/control-flow/if-let-expressions.md:16 +#: src/control-flow/while-let-expressions.md:21 #: src/control-flow/match-expressions.md:22 msgid "" "See [pattern matching](../pattern-matching.md) for more details on patterns in\n" @@ -6879,17 +6498,13 @@ msgstr "ํŒจํ„ด์— ๊ด€ํ•œ ์„ค๋ช…์€ [ํŒจํ„ด ๋งค์นญ](../pattern-matching.md)์„ #: src/control-flow/if-let-expressions.md:21 msgid "" -"* `if let` can be more concise than `match`, e.g., when only one case is interesting. In contrast, " -"`match` requires all branches to be covered.\n" -" * For the similar use case consider demonstrating a newly stabilized [`let else`](https://" -"github.com/rust-lang/rust/pull/93628) feature.\n" +"* `if let` can be more concise than `match`, e.g., when only one case is interesting. In contrast, `match` requires all branches to be covered.\n" +" * For the similar use case consider demonstrating a newly stabilized [`let else`](https://github.com/rust-lang/rust/pull/93628) feature.\n" "* A common usage is handling `Some` values when working with `Option`.\n" "* Unlike `match`, `if let` does not support guard clauses for pattern matching." msgstr "" -"* `if let`์€ `match`๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ •ํ•œ ๊ฒฝ์šฐ๋งŒ ๊ณ ๋ คํ•˜๊ณ  ์‹ถ๋”๋ผ๋„ `match`" -"๋Š” ๋ชจ๋“  ๋ถ„๊ธฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n" -" * ๋น„์Šทํ•œ ์‚ฌ์šฉ๋ก€๋กœ ์ƒˆ๋กญ๊ฒŒ \"stable\" ๋ฆด๋ฆฌ์ฆˆ ๋œ [`let else`](https://github.com/rust-lang/rust/" -"pull/93628) ๊ธฐ๋Šฅ์„ ์‹œ์—ฐํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" +"* `if let`์€ `match`๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ •ํ•œ ๊ฒฝ์šฐ๋งŒ ๊ณ ๋ คํ•˜๊ณ  ์‹ถ๋”๋ผ๋„ `match`๋Š” ๋ชจ๋“  ๋ถ„๊ธฐ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.\n" +" * ๋น„์Šทํ•œ ์‚ฌ์šฉ๋ก€๋กœ ์ƒˆ๋กญ๊ฒŒ \"stable\" ๋ฆด๋ฆฌ์ฆˆ ๋œ [`let else`](https://github.com/rust-lang/rust/pull/93628) ๊ธฐ๋Šฅ์„ ์‹œ์—ฐํ•˜๋Š” ๊ฒƒ๋„ ๊ณ ๋ คํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" "* ์ผ๋ฐ˜์ ์œผ๋กœ `Option`์œผ๋กœ ์ž‘์—…ํ•  ๋•Œ `Some` ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" "* `match`์™€ ๋‹ค๋ฅด๊ฒŒ `if let` ํŒจํ„ด ๋งค์นญ์—์„œ๋Š” ๊ฐ€๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." @@ -6952,15 +6567,12 @@ msgid "" "return `None`. The `while let` lets us keep iterating through all items." msgstr "" "`v.into_iter()`๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๋ฐ˜๋ณต์ž๋Š” `next()`๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค `Option`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" -"๋ฐ˜๋ณต์ž๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€๋Š” `Some(x)`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋งˆ์ง€๋ง‰์—” `None`์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. `while let`์„ ํ†ตํ•ด ๋ฐ˜๋ณต" -"์ž์˜ ๋ชจ๋“  ์•„์ดํ…œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +"๋ฐ˜๋ณต์ž๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€๋Š” `Some(x)`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋งˆ์ง€๋ง‰์—” `None`์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. `while let`์„ ํ†ตํ•ด ๋ฐ˜๋ณต์ž์˜ ๋ชจ๋“  ์•„์ดํ…œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/control-flow/while-let-expressions.md:27 msgid "" "* Point out that the `while let` loop will keep going as long as the value matches the pattern.\n" -"* You could rewrite the `while let` loop as an infinite loop with an if statement that breaks when " -"there is no value to unwrap for `iter.next()`. The `while let` provides syntactic sugar for the " -"above scenario.\n" +"* You could rewrite the `while let` loop as an infinite loop with an if statement that breaks when there is no value to unwrap for `iter.next()`. The `while let` provides syntactic sugar for the above scenario.\n" " \n" "" msgstr "" @@ -6973,9 +6585,7 @@ msgstr "# `for` ํ‘œํ˜„์‹" msgid "" "The `for` expression is closely related to the `while let` expression. It will\n" "automatically call `into_iter()` on the expression and then iterate over it:" -msgstr "" -"`for`ํ‘œํ˜„์‹์€ `while let` ํ‘œํ˜„์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. `for`ํ‘œํ˜„์‹์€ ์ž๋™์œผ๋กœ `into_iter()`๋ฅผ ํ˜ธ์ถœํ•œ " -"๋‹ค์Œ ์ด๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค." +msgstr "`for`ํ‘œํ˜„์‹์€ `while let` ํ‘œํ˜„์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. `for`ํ‘œํ˜„์‹์€ ์ž๋™์œผ๋กœ `into_iter()`๋ฅผ ํ˜ธ์ถœํ•œ ๋‹ค์Œ ์ด๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค." #: src/control-flow/for-expressions.md:6 msgid "" @@ -7008,16 +6618,14 @@ msgid "" "* Index iteration is not a special syntax in Rust for just that case.\n" "* `(0..10)` is a range that implements an `Iterator` trait. \n" "* `step_by` is a method that returns another `Iterator` that skips every other element. \n" -"* Modify the elements in the vector and explain the compiler errors. Change vector `v` to be " -"mutable and the for loop to `for x in v.iter_mut()`." +"* Modify the elements in the vector and explain the compiler errors. Change vector `v` to be mutable and the for loop to `for x in v.iter_mut()`." msgstr "" "
\n" " \n" "* ๋Ÿฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค ๋ฐ˜๋ณต์„ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. \n" "* `(0..10)`์€ `Iterator` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ”์œ„(range) ๊ฐ’์ž…๋‹ˆ๋‹ค. \n" "* `step_by`๋Š” ๋ฐ˜๋ณต์ž์˜ ์š”์†Œ๋“ค์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๋˜๋‹ค๋ฅธ `Iterator`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.\n" -"* ๋ฒกํ„ฐ ์š”์†Œ๋“ค์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๋ฅผ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. `v` ๋ฒกํ„ฐ๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋ณ€๊ฒฝ" -"ํ•˜๊ณ  ๋ฃจํ”„๋Š” `for x in v.iter_mut()`๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”." +"* ๋ฒกํ„ฐ ์š”์†Œ๋“ค์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๋ฅผ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. `v` ๋ฒกํ„ฐ๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ฃจํ”„๋Š” `for x in v.iter_mut()`๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”." #: src/control-flow/loop-expressions.md:1 msgid "# `loop` expressions" @@ -7027,9 +6635,7 @@ msgstr "# `loop` ํ‘œํ˜„์‹" msgid "" "Finally, there is a `loop` keyword which creates an endless loop. Here you must\n" "either `break` or `return` to stop the loop:" -msgstr "" -"๋งˆ์ง€๋ง‰์œผ๋กœ `loop`ํ‚ค์›Œ๋“œ๋Š” ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋“œ์‹œ `break` ๋˜๋Š” `return`์„ ์‚ฌ์šฉํ•ด์„œ ๋ฃจ" -"ํ”„๋ฅผ ์ •์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." +msgstr "๋งˆ์ง€๋ง‰์œผ๋กœ `loop`ํ‚ค์›Œ๋“œ๋Š” ๋ฌดํ•œ ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜๋“œ์‹œ `break` ๋˜๋Š” `return`์„ ์‚ฌ์šฉํ•ด์„œ ๋ฃจํ”„๋ฅผ ์ •์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." #: src/control-flow/loop-expressions.md:6 msgid "" @@ -7066,9 +6672,7 @@ msgstr "# `match` ํ‘œํ˜„์‹" msgid "" "The `match` keyword is used to match a value against one or more patterns. In\n" "that sense, it works like a series of `if let` expressions:" -msgstr "" -"`match`ํ‚ค์›Œ๋“œ๋Š” ์–ด๋–ค ๊ฐ’์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒจํ„ด์— ๋Œ€ํ•ด ๋งค์น˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ฉด์—์„œ `if let` ํ‘œํ˜„" -"์‹์„ ์—ฌ๋Ÿฌ๊ฐœ ์ด์–ด ๋†“์€ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค." +msgstr "`match`ํ‚ค์›Œ๋“œ๋Š” ์–ด๋–ค ๊ฐ’์„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒจํ„ด์— ๋Œ€ํ•ด ๋งค์น˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋ฉด์—์„œ `if let` ํ‘œํ˜„์‹์„ ์—ฌ๋Ÿฌ๊ฐœ ์ด์–ด ๋†“์€ ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค." #: src/control-flow/match-expressions.md:6 msgid "" @@ -7090,18 +6694,14 @@ msgstr "" msgid "" "Like `if let`, each match arm must have the same type. The type is the last\n" "expression of the block, if any. In the example above, the type is `()`." -msgstr "" -"`if let`๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค์น˜์˜ ๋ชจ๋“  ํŒ”(arm)์€ ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒ”์ด ๋ธ”๋ก์ด๋ผ๋ฉด ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ " -"ํ‘œํ˜„์‹์ด ๊ทธ ํƒ€์ž…์ด ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์ œ์—์„œ ๋งค์น˜ ํ‘œํ˜„์‹์˜ ํƒ€์ž…์€ `()`์ž…๋‹ˆ๋‹ค." +msgstr "`if let`๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค์น˜์˜ ๋ชจ๋“  ํŒ”(arm)์€ ๊ฐ™์€ ํƒ€์ž…์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒ”์ด ๋ธ”๋ก์ด๋ผ๋ฉด ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์ด ๊ทธ ํƒ€์ž…์ด ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์ œ์—์„œ ๋งค์น˜ ํ‘œํ˜„์‹์˜ ํƒ€์ž…์€ `()`์ž…๋‹ˆ๋‹ค." #: src/control-flow/match-expressions.md:27 msgid "" "* Save the match expression to a variable and print it out.\n" "* Remove `.as_deref()` and explain the error.\n" -" * `std::env::args().next()` returns an `Option`, but we cannot match against " -"`String`.\n" -" * `as_deref()` transforms an `Option` to `Option<&T::Target>`. In our case, this turns " -"`Option` into `Option<&str>`.\n" +" * `std::env::args().next()` returns an `Option`, but we cannot match against `String`.\n" +" * `as_deref()` transforms an `Option` to `Option<&T::Target>`. In our case, this turns `Option` into `Option<&str>`.\n" " * We can now use pattern matching to match against the `&str` inside `Option`.\n" "
" msgstr "" @@ -7115,9 +6715,7 @@ msgid "" "If you want to exit a loop early, use `break`, if you want to immediately start\n" "the next iteration use `continue`. Both `continue` and `break` can optionally\n" "take a label argument which is used to break out of nested loops:" -msgstr "" -"๋ฃจํ”„๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋ ค๋ฉด `break`๋ฅผ, ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” `continue`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฃจํ”„์—" -"์„œ๋Š” ๋ ˆ์ด๋ธ”๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "๋ฃจํ”„๋ฅผ ๋น ์ ธ๋‚˜๊ฐ€๋ ค๋ฉด `break`๋ฅผ, ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด์„œ๋Š” `continue`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฃจํ”„์—์„œ๋Š” ๋ ˆ์ด๋ธ”๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/control-flow/break-continue.md:7 msgid "" @@ -7153,10 +6751,7 @@ msgid "" "Rust comes with a standard library which helps establish a set of common types\n" "used by Rust library and programs. This way, two libraries can work together\n" "smoothly because they both use the same `String` type." -msgstr "" -"๋Ÿฌ์ŠคํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Ÿฌ์ŠคํŠธ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  " -"์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํƒ€์ž…๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ ํ•˜๋”๋ผ๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”" -"๋ฐ ํฐ ์–ด๋ ค์›€์ด ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘ ๊ฐ™์€ `String` ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋Ÿฌ์ŠคํŠธ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํƒ€์ž…๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ ํ•˜๋”๋ผ๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํฐ ์–ด๋ ค์›€์ด ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋‘ ๊ฐ™์€ `String` ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/std.md:7 msgid "The common vocabulary types include:" @@ -7166,14 +6761,11 @@ msgstr "์ผ๋ฐ˜์ ์ธ ํƒ€์ž…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค:" msgid "" "* [`Option` and `Result`](std/option-result.md) types: used for optional values\n" " and [error handling](error-handling.md)." -msgstr "" -"* [`Option`๊ณผ `Result`](std/option-result.md) : ์–ด๋–ค ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ ์—†๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ๋ฆฌ๊ณ  [์˜ค๋ฅ˜ ์ฒ˜" -"๋ฆฌ](error-handling.md)์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." +msgstr "* [`Option`๊ณผ `Result`](std/option-result.md) : ์–ด๋–ค ๊ฐ’์ด ์žˆ๊ฑฐ๋‚˜ ์—†๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ๋ฆฌ๊ณ  [์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ](error-handling.md)์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/std.md:12 msgid "* [`String`](std/string.md): the default string type used for owned data." -msgstr "" -"* [`String`](std/string.md): ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ, ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." +msgstr "* [`String`](std/string.md): ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ, ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์œ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/std.md:14 msgid "* [`Vec`](std/vec.md): a standard extensible vector." @@ -7206,8 +6798,7 @@ msgstr "" "
\n" " \n" " * ์‚ฌ์‹ค, ๋Ÿฌ์ŠคํŠธ์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” `core`, `alloc`, `std`์™€ ๊ฐ™์ด ๊ณ„์ธต(layer)์œผ๋กœ ๋‚˜๋ˆ ์ง‘๋‹ˆ๋‹ค. \n" -" * `core`๋Š” `libc`๋‚˜ ํ• ๋‹น์ž(allocator), ์‹ฌ์ง€์–ด OS์—๋„ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜์™€ ํƒ€์ž…์„ " -"ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.\n" +" * `core`๋Š” `libc`๋‚˜ ํ• ๋‹น์ž(allocator), ์‹ฌ์ง€์–ด OS์—๋„ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ•จ์ˆ˜์™€ ํƒ€์ž…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.\n" " * `alloc`์€ `Vec`, `Box`, `Arc`์™€ ๊ฐ™์ด ์ „์—ญ ํž™ ํ• ๋‹น์ด ํ•„์š”ํ•œ ํƒ€์ž…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.\n" " * ์ž„๋ฒ ๋””๋“œ ๋Ÿฌ์ŠคํŠธ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์€ ์ฃผ๋กœ `core`๋งŒ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฐ€๋” `alloc`์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." @@ -7371,13 +6962,10 @@ msgstr "" #: src/std/vec.md:37 msgid "" -"* `Vec` is a type of collection, along with `String` and `HashMap`. The data it contains is " -"stored\n" -" on the heap. This means the amount of data doesn't need to be known at compile time. It can " -"grow\n" +"* `Vec` is a type of collection, along with `String` and `HashMap`. The data it contains is stored\n" +" on the heap. This means the amount of data doesn't need to be known at compile time. It can grow\n" " or shrink at runtime.\n" -"* Notice how `Vec` is a generic type too, but you don't have to specify `T` explicitly. As " -"always\n" +"* Notice how `Vec` is a generic type too, but you don't have to specify `T` explicitly. As always\n" " with Rust type inference, the `T` was established during the first `push` call.\n" "* `vec![...]` is a canonical macro to use instead of `Vec::new()` and it supports adding initial\n" " elements to the vector.\n" @@ -7447,9 +7035,7 @@ msgstr "" #: src/std/hashmap.md:38 msgid "" "* `HashMap` is not defined in the prelude and needs to be brought into scope.\n" -"* Try the following lines of code. The first line will see if a book is in the hashmap and if not " -"return an alternative value. The second line will insert the alternative value in the hashmap if " -"the book is not found." +"* Try the following lines of code. The first line will see if a book is in the hashmap and if not return an alternative value. The second line will insert the alternative value in the hashmap if the book is not found." msgstr "" #: src/std/hashmap.md:41 @@ -7463,8 +7049,7 @@ msgid "" " .or_insert(374);\n" " ```\n" "* Unlike `vec!`, there is unfortunately no standard `hashmap!` macro.\n" -" * Although, since Rust 1.56, HashMap implements [`From<[(K, V); N]>`][1], which allows us to " -"easily initialize a hash map from a literal array:" +" * Although, since Rust 1.56, HashMap implements [`From<[(K, V); N]>`][1], which allows us to easily initialize a hash map from a literal array:" msgstr "" #: src/std/hashmap.md:52 @@ -7480,17 +7065,13 @@ msgstr "" #: src/std/hashmap.md:59 msgid "" " * Alternatively HashMap can be built from any `Iterator` which yields key-value tuples.\n" -"* We are showing `HashMap`, and avoid using `&str` as key to make examples easier. " -"Using references in collections can, of course, be done,\n" +"* We are showing `HashMap`, and avoid using `&str` as key to make examples easier. Using references in collections can, of course, be done,\n" " but it can lead into complications with the borrow checker.\n" -" * Try removing `to_string()` from the example above and see if it still compiles. Where do you " -"think we might run into issues?" +" * Try removing `to_string()` from the example above and see if it still compiles. Where do you think we might run into issues?" msgstr "" #: src/std/hashmap.md:64 -msgid "" -"[1]: https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#impl-" -"From%3C%5B(K%2C%20V)%3B%20N%5D%3E-for-HashMap%3CK%2C%20V%2C%20RandomState%3E" +msgid "[1]: https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#impl-From%3C%5B(K%2C%20V)%3B%20N%5D%3E-for-HashMap%3CK%2C%20V%2C%20RandomState%3E" msgstr "" #: src/std/box.md:1 @@ -7544,13 +7125,10 @@ msgstr "" #: src/std/box.md:34 msgid "" "* `Box` is like `std::unique_ptr` in C++. \n" -"* In the above example, you can even leave out the `*` in the `println!` statement thanks to " -"`Deref`. \n" +"* In the above example, you can even leave out the `*` in the `println!` statement thanks to `Deref`. \n" "* A `Box` can be useful when you:\n" -" * have a type whose size that can't be known at compile time, but the Rust compiler wants to " -"know an exact size.\n" -" * want to transfer ownership of a large amount of data. To avoid copying large amounts of data " -"on the stack, instead store the data on the heap in a `Box` so only the pointer is moved.\n" +" * have a type whose size that can't be known at compile time, but the Rust compiler wants to know an exact size.\n" +" * want to transfer ownership of a large amount of data. To avoid copying large amounts of data on the stack, instead store the data on the heap in a `Box` so only the pointer is moved.\n" "
" msgstr "" @@ -7601,30 +7179,21 @@ msgstr "" msgid "" "* If the `Box` was not used here and we attempted to embed a `List` directly into the `List`,\n" "the compiler would not compute a fixed size of the struct in memory, it would look infinite." -msgstr "" -"* ๋งŒ์ผ `Box`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  `List`์— ์ง์ ‘ `List`๋ฅผ ํฌํ•จํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๊ณ " -"์ • ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณด๊ธฐ์— ๋ฌดํ•œ๋Œ€์˜ ํฌ๊ธฐ๋กœ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค." +msgstr "* ๋งŒ์ผ `Box`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  `List`์— ์ง์ ‘ `List`๋ฅผ ํฌํ•จํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๊ณ ์ • ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณด๊ธฐ์— ๋ฌดํ•œ๋Œ€์˜ ํฌ๊ธฐ๋กœ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/std/box-recursive.md:36 msgid "" -"* `Box` solves this problem as it has the same size as a regular pointer and just points at the " -"next\n" +"* `Box` solves this problem as it has the same size as a regular pointer and just points at the next\n" "element of the `List` in the heap." -msgstr "" -"* `Box`๋Š” ์ผ๋ฐ˜ ํฌ์ธํ„ฐ์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํž™์— ์œ„์น˜ํ•œ " -"`List`์˜ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฟ์ž…๋‹ˆ๋‹ค." +msgstr "* `Box`๋Š” ์ผ๋ฐ˜ ํฌ์ธํ„ฐ์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํž™์— ์œ„์น˜ํ•œ `List`์˜ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฟ์ž…๋‹ˆ๋‹ค." #: src/std/box-recursive.md:39 msgid "" -"* Remove the `Box` in the List definition and show the compiler error. \"Recursive with " -"indirection\" is a hint you might want to use a Box or reference of some kind, instead of storing " -"a value directly. \n" +"* Remove the `Box` in the List definition and show the compiler error. \"Recursive with indirection\" is a hint you might want to use a Box or reference of some kind, instead of storing a value directly. \n" " \n" "" msgstr "" -"* `List` ์ •์˜์—์„œ `Box`๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์–ด๋–ค ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. โ€œRecursive with " -"indirectionโ€๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ฉด, ๊ฐ’์„ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  `Box`๋‚˜ ๋น„์Šทํ•œ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ฐธ์กฐ ํƒ€์ž…์ด ํ•„์š”" -"ํ•˜๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* `List` ์ •์˜์—์„œ `Box`๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์–ด๋–ค ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. โ€œRecursive with indirectionโ€๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ฉด, ๊ฐ’์„ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  `Box`๋‚˜ ๋น„์Šทํ•œ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ฐธ์กฐ ํƒ€์ž…์ด ํ•„์š”ํ•˜๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " \n" "" @@ -7636,9 +7205,7 @@ msgstr "# ํ‹ˆ์ƒˆ ์ตœ์ ํ™”(Niche Optimization)" msgid "" "A `Box` cannot be empty, so the pointer is always valid and non-`null`. This\n" "allows the compiler to optimize the memory layout:" -msgstr "" -"`Box`๋Š” ๋น„์–ด์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ์ธํ„ฐ๋Š” ํ•ญ์ƒ ์œ ํšจํ•˜๋ฉฐ `null`์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ" -"๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค." +msgstr "`Box`๋Š” ๋น„์–ด์žˆ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํฌ์ธํ„ฐ๋Š” ํ•ญ์ƒ ์œ ํšจํ•˜๋ฉฐ `null`์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค." #: src/std/box-niche.md:19 msgid "" @@ -7691,8 +7258,7 @@ msgid "" msgstr "" "* `Rc`๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ [`Cell` ๋˜๋Š” `RefCell`][2]๋กœ ๋ž˜ํ•‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.\n" "* ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์ธ ๊ฒฝ์šฐ [`Arc`][3]๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" -"* drop ๊ฐ€๋Šฅํ•œ ์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณต์œ  ํฌ์ธํ„ฐ๋ฅผ [`Weak`][4] ํฌ์ธํ„ฐ๋กœ **๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ**ํ•  ์ˆ˜๋„ ์žˆ" -"์Šต๋‹ˆ๋‹ค." +"* drop ๊ฐ€๋Šฅํ•œ ์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณต์œ  ํฌ์ธํ„ฐ๋ฅผ [`Weak`][4] ํฌ์ธํ„ฐ๋กœ **๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ**ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/std/rc.md:24 msgid "" @@ -7710,18 +7276,15 @@ msgstr "" msgid "" "* Like C++'s `std::shared_ptr`.\n" "* `clone` is cheap: creates a pointer to the same allocation and increases the reference count.\n" -"* `make_mut` actually clones the inner value if necessary (\"clone-on-write\") and returns a " -"mutable reference.\n" +"* `make_mut` actually clones the inner value if necessary (\"clone-on-write\") and returns a mutable reference.\n" "* You can `downgrade()` a `Rc` into a *weakly reference-counted* object to\n" " create cycles that will be dropped properly (likely in combination with\n" " `RefCell`)." msgstr "" "* C++์˜ `std::shared_ptr`์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" "* `clone`์€ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ• ๋‹น์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ๋Š˜๋ฆผ๋‹ˆ๋‹ค.\n" -"* `make_mut`๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋‚ด๋ถ€ ๊ฐ’์„ ๋ณต์ œํ•˜๊ณ ( (\"clone-on-write\") ) ๊ฐ€๋ณ€ ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ" -"๋‹ค.\n" -"* `Rc`๋Š” `downgrade()`๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ **weak ์ฐธ์กฐ ์นด์šดํŠธ**๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ˆœํ™˜๊ตฌ" -"์กฐ๋ผ ํ•˜๋”๋ผ๋„ drop์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ `RefCell` ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)" +"* `make_mut`๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋‚ด๋ถ€ ๊ฐ’์„ ๋ณต์ œํ•˜๊ณ ( (\"clone-on-write\") ) ๊ฐ€๋ณ€ ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" +"* `Rc`๋Š” `downgrade()`๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ **weak ์ฐธ์กฐ ์นด์šดํŠธ**๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ˆœํ™˜๊ตฌ์กฐ๋ผ ํ•˜๋”๋ผ๋„ drop์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ `RefCell` ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)" #: src/std/rc.md:38 msgid "" @@ -7808,10 +7371,8 @@ msgstr "" #: src/modules.md:28 msgid "" -"* Packages provide functionality and include a `Cargo.toml` file that describes how to build a " -"bundle of 1+ crates.\n" -"* Crates are a tree of modules, where a binary crate creates an executable and a library crate " -"compiles to a library.\n" +"* Packages provide functionality and include a `Cargo.toml` file that describes how to build a bundle of 1+ crates.\n" +"* Crates are a tree of modules, where a binary crate creates an executable and a library crate compiles to a library.\n" "* Modules define organization, scope, and are the focus of this section." msgstr "" @@ -7881,14 +7442,12 @@ msgid "* Use the `pub` keyword to make modules public." msgstr "" #: src/modules/visibility.md:41 -msgid "" -"Additionally, there are advanced `pub(...)` specifiers to restrict the scope of public visibility." +msgid "Additionally, there are advanced `pub(...)` specifiers to restrict the scope of public visibility." msgstr "" #: src/modules/visibility.md:43 msgid "" -"* See the [Rust Reference](https://doc.rust-lang.org/reference/visibility-and-privacy.html#pubin-" -"path-pubcrate-pubsuper-and-pubself)).\n" +"* See the [Rust Reference](https://doc.rust-lang.org/reference/visibility-and-privacy.html#pubin-path-pubcrate-pubsuper-and-pubself)).\n" "* Configuring `pub(crate)` visibility is a common pattern.\n" "* Less commonly, you can give visibility to a specific path.\n" "* In any case, visibility must be granted to an ancestor module (and all of its descendants)." @@ -7969,8 +7528,7 @@ msgstr "" #: src/modules/filesystem.md:26 msgid "" -"* The change from `module/mod.rs` to `module.rs` doesn't preclude the use of submodules in Rust " -"2018.\n" +"* The change from `module/mod.rs` to `module.rs` doesn't preclude the use of submodules in Rust 2018.\n" " (It was mandatory in Rust 2015.)" msgstr "" @@ -8033,10 +7591,8 @@ msgid "" "validate credit card numbers. The algorithm takes a string as input and does the\n" "following to validate the credit card number:" msgstr "" -"[๋ฃฌ(Luhn) ์•Œ๊ณ ๋ฆฌ์ฆ˜](https://ko.wikipedia.org/wiki/%EB%A3%AC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98)" -"์€ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ ๊ฒ€์ฆ์— ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค. \n" -"์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ๋ฅผ `๋ฌธ์ž์—ด`๋กœ ์ž…๋ ฅ๋ฐ›๊ณ , ์•„๋ž˜์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธ" -"ํ•ฉ๋‹ˆ๋‹ค:" +"[๋ฃฌ(Luhn) ์•Œ๊ณ ๋ฆฌ์ฆ˜](https://ko.wikipedia.org/wiki/%EB%A3%AC_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98)์€ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ ๊ฒ€์ฆ์— ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค. \n" +"์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ๋ฅผ `๋ฌธ์ž์—ด`๋กœ ์ž…๋ ฅ๋ฐ›๊ณ , ์•„๋ž˜์˜ ์ˆœ์„œ์— ๋”ฐ๋ผ ์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ์˜ ์œ ํšจ์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:" #: src/exercises/day-2/luhn.md:7 msgid "* Ignore all spaces. Reject number with less than two digits." @@ -8046,17 +7602,13 @@ msgstr "* ๋ชจ๋“  ๊ณต๋ฐฑ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. 2์ž๋ฆฌ ๋ฏธ๋งŒ ์ˆซ์ž๋Š” ๋ฌด์‹œํ•ฉ msgid "" "* Moving from right to left, double every second digit: for the number `1234`,\n" " we double `3` and `1`." -msgstr "" -"* ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ 2๋ฒˆ์งธ ์ž๋ฆฌ๋งˆ๋‹ค ์ˆซ์ž๋ฅผ 2๋ฐฐ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `1234`์—์„œ 3๊ณผ 1" -"์„ ๋‘๋ฐฐ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.(2464)" +msgstr "* ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉฐ 2๋ฒˆ์งธ ์ž๋ฆฌ๋งˆ๋‹ค ์ˆซ์ž๋ฅผ 2๋ฐฐ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `1234`์—์„œ 3๊ณผ 1์„ ๋‘๋ฐฐ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.(2464)" #: src/exercises/day-2/luhn.md:12 msgid "" "* After doubling a digit, sum the digits. So doubling `7` becomes `14` which\n" " becomes `5`." -msgstr "" -"* ๋‘๋ฐฐ๋กœ ๋งŒ๋“  ์ˆซ์ž๊ฐ€ 2์ž๋ฆฌ๋ผ๋ฉด ๊ฐ ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๋”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `7`์€ ๋‘๋ฐฐ๋กœ ๋งŒ๋“ค๋ฉด `14`์ด๋ฏ€๋กœ " -"`5`๊ฐ€ ๋ฉ๋‹ˆ๋‹ค." +msgstr "* ๋‘๋ฐฐ๋กœ ๋งŒ๋“  ์ˆซ์ž๊ฐ€ 2์ž๋ฆฌ๋ผ๋ฉด ๊ฐ ์ž๋ฆฌ ์ˆซ์ž๋ฅผ ๋”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, `7`์€ ๋‘๋ฐฐ๋กœ ๋งŒ๋“ค๋ฉด `14`์ด๋ฏ€๋กœ `5`๊ฐ€ ๋ฉ๋‹ˆ๋‹ค." #: src/exercises/day-2/luhn.md:15 msgid "* Sum all the undoubled and doubled digits." @@ -8146,16 +7698,13 @@ msgid "" "matches a full segment. See the unit tests below." msgstr "" "์ด๋ฒˆ ํ›ˆ๋ จ์€ ์›น ์„œ๋ฒ„์˜ ๋ผ์šฐํŒ… ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. \n" -"์„œ๋ฒ„๋Š” _์š”์ฒญ ๊ฒฝ๋กœ(request path)_ ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ _๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ(path prefix)_ ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ" -"๋‹ค. ๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ๋Š” ์™€์ผ๋“œ์นด๋“œ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." +"์„œ๋ฒ„๋Š” _์š”์ฒญ ๊ฒฝ๋กœ(request path)_ ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ _๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ(path prefix)_ ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ ์ ‘๋‘์‚ฌ๋Š” ์™€์ผ๋“œ์นด๋“œ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." #: src/exercises/day-2/strings-iterators.md:8 msgid "" "Copy the following code to and make the tests\n" "pass. Try avoiding allocating a `Vec` for your intermediate results:" -msgstr "" -"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๊ฐ’" -"์„ `Vec`์— ํ• ๋‹นํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๊ฐ’์„ `Vec`์— ํ• ๋‹นํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-2/strings-iterators.md:16 msgid "" @@ -8173,7 +7722,8 @@ msgid "" " assert!(prefix_matches(\"/v1/publishers\", \"/v1/publishers/abc/books\"));" msgstr "" -#: src/exercises/day-2/strings-iterators.md:26 src/exercises/day-2/solutions-afternoon.md:146 +#: src/exercises/day-2/strings-iterators.md:26 +#: src/exercises/day-2/solutions-afternoon.md:146 msgid "" " assert!(!prefix_matches(\"/v1/publishers\", \"/v1\"));\n" " assert!(!prefix_matches(\"/v1/publishers\", \"/v1/publishersBooks\"));\n" @@ -8181,7 +7731,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-2/strings-iterators.md:31 src/exercises/day-2/solutions-afternoon.md:151 +#: src/exercises/day-2/strings-iterators.md:31 +#: src/exercises/day-2/solutions-afternoon.md:151 msgid "" "#[test]\n" "fn test_matches_with_wildcard() {\n" @@ -8305,22 +7856,13 @@ msgstr "" #: src/traits.md:41 msgid "" -"* Traits may specify pre-implemented (default) methods and methods that users are required to " -"implement themselves. Methods with default implementations can rely on required methods.\n" -"* Types that implement a given trait may be of different sizes. This makes it impossible to have " -"things like `Vec` in the example above.\n" -"* `dyn Greet` is a way to tell the compiler about a dynamically sized type that implements " -"`Greet`.\n" -"* In the example, `pets` holds Fat Pointers to objects that implement `Greet`. The Fat Pointer " -"consists of two components, a pointer to the actual object and a pointer to the virtual method " -"table for the `Greet` implementation of that particular object." +"* Traits may specify pre-implemented (default) methods and methods that users are required to implement themselves. Methods with default implementations can rely on required methods.\n" +"* Types that implement a given trait may be of different sizes. This makes it impossible to have things like `Vec` in the example above.\n" +"* `dyn Greet` is a way to tell the compiler about a dynamically sized type that implements `Greet`.\n" +"* In the example, `pets` holds Fat Pointers to objects that implement `Greet`. The Fat Pointer consists of two components, a pointer to the actual object and a pointer to the virtual method table for the `Greet` implementation of that particular object." msgstr "" -"* ํŠธ๋ ˆ์ดํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ์™€ ์‚ฌ์ „ ๊ตฌํ˜„๋œ(๋””ํดํŠธ) ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. " -"๊ธฐ๋ณธ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋Š” (๋‹ค๋ฅธ)ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* ์—ฌ๋Ÿฌ ํƒ€์ž…์ด ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ๊ทธ ํฌ๊ธฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ `Vec`๊ฐ™" -"์€ ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `Greet`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํƒ€์ž…๋“ค ์ค‘ ์–ด๋–ค ํฌ๊ธฐ์˜ ํƒ€์ž…์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ" -"๋  ์ง€, ์ปดํŒŒ์ผ ์‹œ์— ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๋ฐ˜๋ฉด, `Vec<>`๋Š” ํƒ€์ž…์˜ ํฌ๊ธฐ๋ฅผ ์ปดํŒŒ์ผ ์‹œ์— ์•Œ๊ณ ์ž ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ" -"๋‹ค.\n" +"* ํŠธ๋ ˆ์ดํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ฉ”์„œ๋“œ์™€ ์‚ฌ์ „ ๊ตฌํ˜„๋œ(๋””ํดํŠธ) ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋Š” (๋‹ค๋ฅธ)ํ•„์ˆ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* ์—ฌ๋Ÿฌ ํƒ€์ž…์ด ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ๊ทธ ํฌ๊ธฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ `Vec`๊ฐ™์€ ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `Greet`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํƒ€์ž…๋“ค ์ค‘ ์–ด๋–ค ํฌ๊ธฐ์˜ ํƒ€์ž…์ด ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ์ง€, ์ปดํŒŒ์ผ ์‹œ์— ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๋Š” ๋ฐ˜๋ฉด, `Vec<>`๋Š” ํƒ€์ž…์˜ ํฌ๊ธฐ๋ฅผ ์ปดํŒŒ์ผ ์‹œ์— ์•Œ๊ณ ์ž ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" "* `dyn Greet`๋Š” `Greet`์„ ๊ตฌํ˜„ํ•˜๋Š”, ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ํƒ€์ž…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค." #: src/traits.md:46 @@ -8347,9 +7889,7 @@ msgstr "# ํŠธ๋ ˆ์ดํŠธ ์ƒ์†ํ•˜๊ธฐ(Deriving Traits)" #: src/traits/deriving-traits.md:3 msgid "You can let the compiler derive a number of traits:" -msgstr "" -"์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ƒ์†(derive)ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ž" -"๋™์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ƒ์†(derive)ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/traits/deriving-traits.md:5 msgid "" @@ -8503,23 +8043,18 @@ msgstr "" #: src/traits/iterator.md:32 msgid "" -"* `IntoIterator` is the trait that makes for loops work. It is implemented by collection types " -"such as\n" +"* `IntoIterator` is the trait that makes for loops work. It is implemented by collection types such as\n" " `Vec` and references to them such as `&Vec` and `&[T]`. Ranges also implement it.\n" "* The `Iterator` trait implements many common functional programming operations over collections \n" -" (e.g. `map`, `filter`, `reduce`, etc). This is the trait where you can find all the " -"documentation\n" -" about them. In Rust these functions should produce the code as efficient as equivalent " -"imperative\n" +" (e.g. `map`, `filter`, `reduce`, etc). This is the trait where you can find all the documentation\n" +" about them. In Rust these functions should produce the code as efficient as equivalent imperative\n" " implementations.\n" " \n" "" msgstr "" "* `IntoIterator`๋Š” ๋ฃจํ”„๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ํŠธ๋ ˆ์ดํŠธ์ž…๋‹ˆ๋‹ค.\n" -" `Vec`์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…๊ณผ ๊ทธ์— ๋Œ€ํ•œ ์ฐธ์กฐ ํƒ€์ž…(`&Vec`, `&[T]`)๋“ค ๋ชจ๋‘ ์ด ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ" -"๋‹ˆ๋‹ค. Range ์—ญ์‹œ ์ด๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.\n" -"* `Iterator` ํŠธ๋ ˆ์ดํŠธ๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์‚ฐ (`map`, `filter`, `reduce` ๋“ฑ)" -"์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. \n" +" `Vec`์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…๊ณผ ๊ทธ์— ๋Œ€ํ•œ ์ฐธ์กฐ ํƒ€์ž…(`&Vec`, `&[T]`)๋“ค ๋ชจ๋‘ ์ด ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Range ์—ญ์‹œ ์ด๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.\n" +"* `Iterator` ํŠธ๋ ˆ์ดํŠธ๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์‚ฐ (`map`, `filter`, `reduce` ๋“ฑ)์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. \n" "์ด ์—ฐ์‚ฐ๋“ค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ `Iterator` ํŠธ๋ ˆ์ดํŠธ์˜ API ๋ ˆํผ๋Ÿฐ์Šค์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "๋Ÿฌ์ŠคํŠธ์—์„œ ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜ํ˜• ์—ฐ์‚ฐ๋“ค์€ ์ ˆ์ฐจํ˜•์œผ๋กœ ๊ตฌํ˜„๋œ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.\n" " \n" @@ -8535,9 +8070,7 @@ msgstr "# FromIterator" #: src/traits/from-iterator.md:3 msgid "[`FromIterator`][1] lets you build a collection from an [`Iterator`][2]." -msgstr "" -"์–ด๋–ค ์ปฌ๋ ‰์…˜์ด `[FromIterator`][1]๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด [`Iterator`][2]๋กœ๋ถ€ํ„ฐ ๊ทธ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต" -"๋‹ˆ๋‹ค." +msgstr "์–ด๋–ค ์ปฌ๋ ‰์…˜์ด `[FromIterator`][1]๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด [`Iterator`][2]๋กœ๋ถ€ํ„ฐ ๊ทธ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/traits/from-iterator.md:5 msgid "" @@ -8572,8 +8105,7 @@ msgstr "" msgid "" "There are also implementations which let you do cool things like convert an\n" "`Iterator>` into a `Result, E>`." -msgstr "" -"์ด๋Š” ๋˜ํ•œ `Iterator>`์„ `Result, E>`๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ‹์ง„ ์ž‘์—…๋„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์ด๋Š” ๋˜ํ•œ `Iterator>`์„ `Result, E>`๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ‹์ง„ ์ž‘์—…๋„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/traits/from-iterator.md:28 msgid "" @@ -8625,10 +8157,8 @@ msgstr "" msgid "" "
\n" " \n" -"* That's why it is common to only implement `From`, as your type will get `Into` implementation " -"too.\n" -"* When declaring a function argument input type like \"anything that can be converted into a " -"`String`\", the rule is opposite, you should use `Into`.\n" +"* That's why it is common to only implement `From`, as your type will get `Into` implementation too.\n" +"* When declaring a function argument input type like \"anything that can be converted into a `String`\", the rule is opposite, you should use `Into`.\n" " Your function will accept types that implement `From` and those that _only_ implement `Into`.\n" " \n" "
" @@ -8636,9 +8166,7 @@ msgstr "" "
\n" " \n" "* ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ •์˜ ํƒ€์ž…์˜ ๊ฒฝ์šฐ์—๋„ `From` ๋งŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.\n" -"* \"`String`์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ\"๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜ ํƒ€์ž…์„ ์„ ์–ธํ•  ๋•Œ์—๋Š” `Into`๋ฅผ ์‚ฌ์šฉํ•ด" -"์•ผ ํ•จ์„ ์กฐ์‹ฌํ•˜์„ธ์š”. ๊ทธ๋ž˜์•ผ๋งŒ, ํ•จ์ˆ˜๋Š” `From`์„ ๊ตฌํ˜„ํ•œ ํƒ€์ž…๊ณผ `Into` _๋งŒ_ ๊ตฌํ˜„ํ•œ ํƒ€์ž… ๋ชจ๋‘๋ฅผ ์ธ์ž๋กœ " -"๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* \"`String`์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ\"๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜ ํƒ€์ž…์„ ์„ ์–ธํ•  ๋•Œ์—๋Š” `Into`๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ์กฐ์‹ฌํ•˜์„ธ์š”. ๊ทธ๋ž˜์•ผ๋งŒ, ํ•จ์ˆ˜๋Š” `From`์„ ๊ตฌํ˜„ํ•œ ํƒ€์ž…๊ณผ `Into` _๋งŒ_ ๊ตฌํ˜„ํ•œ ํƒ€์ž… ๋ชจ๋‘๋ฅผ ์ธ์ž๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " \n" "
" @@ -8784,12 +8312,9 @@ msgid "" " trait." msgstr "" "* `&Point`๊ฐ€ `Add`๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ์–ด๋–ค ๊ฒฝ์šฐ์— ์œ ์šฉํ• ๊นŒ์š”?\n" -" * ๋‹ต: `Add:add`๋Š” `self`๋ฅผ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํƒ€์ž… `T`๊ฐ€ `Copy`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด `&T`" -"์— ๋Œ€ํ•ด์„œ๋„ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ˜ธ์ถœ๋ถ€์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ณต์‚ฌ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต" -"๋‹ˆ๋‹ค.\n" +" * ๋‹ต: `Add:add`๋Š” `self`๋ฅผ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํƒ€์ž… `T`๊ฐ€ `Copy`ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด `&T`์— ๋Œ€ํ•ด์„œ๋„ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ˜ธ์ถœ๋ถ€์—์„œ ๋ถˆํ•„์š”ํ•œ ๋ณต์‚ฌ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์™œ `Output`์ด ์—ฐ๊ด€๋œ ํƒ€์ž…์ธ๊ฐ€์š”? ํƒ€์ž… ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ์š”?\n" -" * ๋‹ต: ํƒ€์ž… ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์—ฐ๊ด€๋œ ํƒ€์ž…(`Output`๊ฐ™์€) ์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌ" -"ํ˜„ํ•˜๋Š” ์ชฝ์—์„œ ์ œ์–ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." +" * ๋‹ต: ํƒ€์ž… ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด ์—ฐ๊ด€๋œ ํƒ€์ž…(`Output`๊ฐ™์€) ์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ชฝ์—์„œ ์ œ์–ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." #: src/traits/operators.md:40 msgid "[1]: https://doc.rust-lang.org/std/ops/index.html" @@ -8801,8 +8326,7 @@ msgstr "# `Drop` ํŠธ๋ ˆ์ดํŠธ" #: src/traits/drop.md:3 msgid "Values which implement [`Drop`][1] can specify code to run when they go out of scope:" -msgstr "" -"[`Drop`][1]ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด, ๊ทธ ๊ฐ’์ด ์Šค์ฝ”ํ”„ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "[`Drop`][1]ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด, ๊ทธ ๊ฐ’์ด ์Šค์ฝ”ํ”„ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐˆ ๋•Œ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/traits/drop.md:5 msgid "" @@ -8849,8 +8373,7 @@ msgid "" "* Try replacing `drop(a)` with `a.drop()`." msgstr "" "* `Drop::drop`์€ ์™œ `self`๋ฅผ ์ธ์ž๋กœ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๊นŒ?\n" -" * ์งง์€ ๋Œ€๋‹ต: ๋งŒ์•ฝ ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด `std::mem::drop`์ด ๋ธ”๋ก์˜ ๋์—์„œ ํ˜ธ์ถœ๋˜๊ณ , ๋‹ค์‹œ `Drop::drop`์„ ํ˜ธ" -"์ถœํ•˜๊ฒŒ๋˜ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.\n" +" * ์งง์€ ๋Œ€๋‹ต: ๋งŒ์•ฝ ๊ทธ๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด `std::mem::drop`์ด ๋ธ”๋ก์˜ ๋์—์„œ ํ˜ธ์ถœ๋˜๊ณ , ๋‹ค์‹œ `Drop::drop`์„ ํ˜ธ์ถœํ•˜๊ฒŒ๋˜ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.\n" "* `drop(a)`๋ฅผ `a.drop()`๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/traits/drop.md:44 @@ -8942,24 +8465,18 @@ msgstr "" #: src/traits/default.md:40 msgid "" " * It can be implemented directly or it can be derived via `#[derive(Default)]`.\n" -" * Derived implementation will produce an instance where all fields are set to their default " -"values.\n" +" * Derived implementation will produce an instance where all fields are set to their default values.\n" " * This means all types in the struct must implement `Default` too.\n" " * Standard Rust types often implement `Default` with reasonable values (e.g. `0`, `\"\"`, etc).\n" " * The partial struct copy works nicely with default.\n" -" * Rust standard library is aware that types can implement `Default` and provides convenience " -"methods that use it." +" * Rust standard library is aware that types can implement `Default` and provides convenience methods that use it." msgstr "" -" * ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ `#[derive(Default)]`๋ฅผ ๋ถ™์—ฌ์„œ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ๊ตฌํ˜„์„ ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ" -"๋‹ค.\n" -" * ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž๋™ ๊ตฌํ˜„์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํ•„๋“œ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ๊ฐ’์„ ์„ค์ •ํ•œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ" -"๋‹ค.\n" +" * ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ `#[derive(Default)]`๋ฅผ ๋ถ™์—ฌ์„œ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ๊ตฌํ˜„์„ ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +" * ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ž๋™ ๊ตฌํ˜„์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ํ•„๋“œ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ ๊ฐ’์„ ์„ค์ •ํ•œ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" " * ๊ตฌ์กฐ์ฒด์˜ ๊ฐ ํ•„๋“œ ํƒ€์ž…๋“ค์ด ๋ชจ๋‘ `Default`๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" -" * ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ํƒ€์ž…๋“ค์€ ๋Œ€๋ถ€๋ถ„ `Default`๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ ๊ฐ’์€ `0`์ด๋‚˜ `\"\"`์ฒ˜๋Ÿผ ์˜ˆ์ƒ ๊ฐ€๋Šฅ" -"ํ•œ ๊ฐ’๋“ค์ž…๋‹ˆ๋‹ค.\n" +" * ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ํƒ€์ž…๋“ค์€ ๋Œ€๋ถ€๋ถ„ `Default`๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ ๊ฐ’์€ `0`์ด๋‚˜ `\"\"`์ฒ˜๋Ÿผ ์˜ˆ์ƒ ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค์ž…๋‹ˆ๋‹ค.\n" " * ๊ตฌ์กฐ์ฒด ๋ถ€๋ถ„ ๋ณต์‚ฌ๋ฅผ ํ• ๋•Œ `default`๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" -" * Rust standard library is aware that types can implement `Default` and provides convenience " -"methods that use it." +" * Rust standard library is aware that types can implement `Default` and provides convenience methods that use it." #: src/traits/default.md:49 msgid "[1]: https://doc.rust-lang.org/std/default/trait.Default.html" @@ -8973,9 +8490,7 @@ msgstr "# ์ œ๋„ˆ๋ฆญ" msgid "" "Rust support generics, which lets you abstract an algorithm (such as sorting)\n" "over the types used in the algorithm." -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” ์ œ๋„ˆ๋ฆญ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜(์ •๋ ฌ๊ณผ ๊ฐ™์€)์„ ์ถ”์ƒํ™” ํ•˜์—ฌ ํŠน์ • ํƒ€์ž…์— ์˜์กดํ•˜" -"์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ์ œ๋„ˆ๋ฆญ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜(์ •๋ ฌ๊ณผ ๊ฐ™์€)์„ ์ถ”์ƒํ™” ํ•˜์—ฌ ํŠน์ • ํƒ€์ž…์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/generics/data-types.md:1 msgid "# Generic Data Types" @@ -9046,19 +8561,16 @@ msgstr "" #: src/generics/methods.md:25 msgid "" "* *Q:* Why `T` is specified twice in `impl Point {}`? Isn't that redundant?\n" -" * This is because it is a generic implementation section for generic type. They are " -"independently generic.\n" +" * This is because it is a generic implementation section for generic type. They are independently generic.\n" " * It means these methods are defined for any `T`.\n" " * It is possible to write `impl Point { .. }`. \n" -" * `Point` is still generic and you can use `Point`, but methods in this block will only " -"be available for `Point`." +" * `Point` is still generic and you can use `Point`, but methods in this block will only be available for `Point`." msgstr "" "* *์งˆ๋ฌธ:* `impl Point {}`์—์„œ `T`๊ฐ€ ์™œ ๋‘ ๋ฒˆ ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?\n" " * ์ œ๋„ˆ๋ฆญ ํƒ€์ž…์— ๋Œ€ํ•œ ์ œ๋„ˆ๋ฆญ ๊ตฌํ˜„ ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๋‘ ์ œ๋„ˆ๋ฆญ์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.\n" " * ์ด๋Š” ์ž„์˜์˜ ๋ชจ๋“  `T`์— ๋Œ€ํ•ด์„œ ์ด ๋ฉ”์†Œ๋“œ๋“ค์ด ์ •์˜๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" " * `impl Point { .. }`์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" -" * `Point`๋Š” ์—ฌ์ „ํžˆ ์ œ๋„ˆ๋ฆญ์ด๋ฉฐ `Point`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๋ธ”๋ก์˜ ๋ฉ”์„œ๋“œ๋Š” `Point`" -"๋งŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +" * `Point`๋Š” ์—ฌ์ „ํžˆ ์ œ๋„ˆ๋ฆญ์ด๋ฉฐ `Point`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ด ๋ธ”๋ก์˜ ๋ฉ”์„œ๋“œ๋Š” `Point`๋งŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/generics/trait-bounds.md:1 msgid "# Trait Bounds" @@ -9068,9 +8580,7 @@ msgstr "# ์ œ๋„ˆ๋ฆญ ํƒ€์ž… ์ œํ•œ(ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„, Trait Bounds)" msgid "" "When working with generics, you often want to require the types to implement\n" "some trait, so that you can call this trait's methods." -msgstr "" -"์ œ๋„ˆ๋ฆญ์„ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด ํƒ€์ž…์ด ์–ด๋–ค ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๊ทธ ํŠธ๋ ˆ" -"์ดํŠธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." +msgstr "์ œ๋„ˆ๋ฆญ์„ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด ํƒ€์ž…์ด ์–ด๋–ค ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๊ทธ ํŠธ๋ ˆ์ดํŠธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/generics/trait-bounds.md:6 msgid "You can do this with `T: Trait` or `impl Trait`:" @@ -9143,8 +8653,7 @@ msgstr "" msgid "" "* It declutters the function signature if you have many parameters.\n" "* It has additional features making it more powerful.\n" -" * If someone asks, the extra feature is that the type on the left of \":\" can be arbitrary, " -"like `Option`.\n" +" * If someone asks, the extra feature is that the type on the left of \":\" can be arbitrary, like `Option`.\n" " \n" "" msgstr "" @@ -9164,7 +8673,8 @@ msgid "" "arguments and return values:" msgstr "ํŠธ๋ ˆ์ดํŠธ ๋ฐ”์šด๋“œ์™€ ์œ ์‚ฌํ•˜๊ฒŒ `impl Trait` ๋ฌธ๋ฒ•์€ ํ•จ์ˆ˜์˜ ์ธ์ž์™€ ๋ฐ˜ํ™˜๊ฐ’์—๋„ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:" -#: src/generics/impl-trait.md:6 src/generics/trait-objects.md:5 src/generics/trait-objects.md:28 +#: src/generics/impl-trait.md:6 src/generics/trait-objects.md:5 +#: src/generics/trait-objects.md:28 msgid "" "```rust,editable\n" "use std::fmt::Display;" @@ -9201,36 +8711,25 @@ msgstr "`impl Trait`๋Š” ์–ด๋””์— ์‚ฌ์šฉ๋˜์—ˆ๋Š๋ƒ์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ์กฐ๊ธˆ #: src/generics/impl-trait.md:26 msgid "" "* For a parameter, `impl Trait` is like an anonymous generic parameter with a trait bound.\n" -"* For a return type, it means that the return type is some concrete type that implements the " -"trait,\n" -" without naming the type. This can be useful when you don't want to expose the concrete type in " -"a\n" +"* For a return type, it means that the return type is some concrete type that implements the trait,\n" +" without naming the type. This can be useful when you don't want to expose the concrete type in a\n" " public API." msgstr "" -"* ํ•จ์ˆ˜ ์ธ์ž์˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” `impl Trait`๋Š” ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„๊ฐ€ ์žˆ๋Š” ์ต๋ช…์˜ ์ œ๋„ˆ๋ฆญ ํƒ€์ž…" -"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" -"* ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š”, ๊ทธ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์ธ๋ฐ, ํƒ€์ž… ์ด๋ฆ„์„ ํ”„๋กœ๊ทธ๋ž˜" -"๋จธ๊ฐ€ ์ง“์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž… ์ด๋ฆ„์„ API๋กœ ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ " -"์šฉํ•ฉ๋‹ˆ๋‹ค." +"* ํ•จ์ˆ˜ ์ธ์ž์˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” `impl Trait`๋Š” ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„๊ฐ€ ์žˆ๋Š” ์ต๋ช…์˜ ์ œ๋„ˆ๋ฆญ ํƒ€์ž…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š”, ๊ทธ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์ธ๋ฐ, ํƒ€์ž… ์ด๋ฆ„์„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง“์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž… ์ด๋ฆ„์„ API๋กœ ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/generics/impl-trait.md:31 msgid "" "This example is great, because it uses `impl Display` twice. It helps to explain that\n" "nothing here enforces that it is _the same_ `impl Display` type. If we used a single \n" -"`T: Display`, it would enforce the constraint that input `T` and return `T` type are the same " -"type.\n" +"`T: Display`, it would enforce the constraint that input `T` and return `T` type are the same type.\n" "It would not work for this particular function, as the type we expect as input is likely not\n" "what `format!` returns. If we wanted to do the same via `: Display` syntax, we'd need two\n" "independent generic parameters.\n" " \n" "" msgstr "" -"์ด ์˜ˆ์‹œ๋Š” `impl Display`๊ฐ€ ๋‘๋ฒˆ ์‚ฌ์šฉ ๋˜์—ˆ๋‹ค๋Š” ์ ์—์„œ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ๋‘ `impl " -"Display`๊ฐ€ ์‹ค์ œ๋กœ ๊ฐ™์€ ํƒ€์ž…์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ `T: Display`๋กœ ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„๋ฅผ ์ •ํ•˜๊ณ  ์ž…" -"๋ ฅ ํŒŒ๋ผ๋ฉ”ํ„ฐ์™€ ๋ฆฌํ„ด ๊ฐ’์˜ ํƒ€์ž…์„ ๋ชจ๋‘ `T`๋กœ ํ–ˆ๋‹ค๋ฉด, ์ด๋Š” ์ž…๋ ฅ๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ™์€ ํƒ€์ž…์ž„์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ด" -"๋ ‡๊ฒŒ ํ–ˆ๋‹ค๋ฉด ์œ„์˜ ์˜ˆ์ œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ์ž…๋ ฅ ๊ฐ’์˜ ํƒ€์ž…์ด `format!`์ด ๋ฆฌํ„ดํ•˜๋Š” " -"ํƒ€์ž…๊ณผ ๊ฐ™์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ `: Display` ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋…๋ฆฝ์ ์ธ ์ œ๋„ˆ๋ฆญ " -"๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.\n" +"์ด ์˜ˆ์‹œ๋Š” `impl Display`๊ฐ€ ๋‘๋ฒˆ ์‚ฌ์šฉ ๋˜์—ˆ๋‹ค๋Š” ์ ์—์„œ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ด ๋‘ `impl Display`๊ฐ€ ์‹ค์ œ๋กœ ๊ฐ™์€ ํƒ€์ž…์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ `T: Display`๋กœ ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„๋ฅผ ์ •ํ•˜๊ณ  ์ž…๋ ฅ ํŒŒ๋ผ๋ฉ”ํ„ฐ์™€ ๋ฆฌํ„ด ๊ฐ’์˜ ํƒ€์ž…์„ ๋ชจ๋‘ `T`๋กœ ํ–ˆ๋‹ค๋ฉด, ์ด๋Š” ์ž…๋ ฅ๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ™์€ ํƒ€์ž…์ž„์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค๋ฉด ์œ„์˜ ์˜ˆ์ œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด, ์ž…๋ ฅ ๊ฐ’์˜ ํƒ€์ž…์ด `format!`์ด ๋ฆฌํ„ดํ•˜๋Š” ํƒ€์ž…๊ณผ ๊ฐ™์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ `: Display` ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋…๋ฆฝ์ ์ธ ์ œ๋„ˆ๋ฆญ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐœ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.\n" " \n" "" @@ -9244,10 +8743,7 @@ msgid "" "implement special [`Fn`](https://doc.rust-lang.org/std/ops/trait.Fn.html),\n" "[`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut.html), and\n" "[`FnOnce`](https://doc.rust-lang.org/std/ops/trait.FnOnce.html) traits:" -msgstr "" -"ํด๋กœ์ € ํ˜น์€ ๋žŒ๋‹คํ‘œํ˜„์‹์€ ์ต๋ช…ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ [`Fn`](https://doc.rust-lang.org/std/ops/trait.Fn." -"html),[`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut.html), [`FnOnce`](https://doc.rust-" -"lang.org/std/ops/trait.FnOnce.html) ๋ผ๋Š” ํŠน๋ณ„ํ•œ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." +msgstr "ํด๋กœ์ € ํ˜น์€ ๋žŒ๋‹คํ‘œํ˜„์‹์€ ์ต๋ช…ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ [`Fn`](https://doc.rust-lang.org/std/ops/trait.Fn.html),[`FnMut`](https://doc.rust-lang.org/std/ops/trait.FnMut.html), [`FnOnce`](https://doc.rust-lang.org/std/ops/trait.FnOnce.html) ๋ผ๋Š” ํŠน๋ณ„ํ•œ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/generics/closures.md:8 msgid "" @@ -9278,30 +8774,21 @@ msgid "If you have an `FnOnce`, you may only call it once. It might consume capt msgstr "`FnOnce`๋Š” ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๋ฉฐ ์บก์ฒ˜๋œ ๊ฐ’์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค." #: src/generics/closures.md:27 -msgid "" -"An `FnMut` might mutate captured values, so you can call it multiple times but not concurrently." -msgstr "" -"`FnMut`๋Š” ์บก์ฒ˜๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋™์‹œ์— ํ˜ธ์ถœ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค." +msgid "An `FnMut` might mutate captured values, so you can call it multiple times but not concurrently." +msgstr "`FnMut`๋Š” ์บก์ฒ˜๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋™์‹œ์— ํ˜ธ์ถœ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค." #: src/generics/closures.md:29 msgid "" -"An `Fn` neither consumes nor mutates captured values, or perhaps captures nothing at all, so it " -"can\n" +"An `Fn` neither consumes nor mutates captured values, or perhaps captures nothing at all, so it can\n" "be called multiple times concurrently." -msgstr "" -"`Fn`์€ ์บก์ฒ˜๋œ ๊ฐ’์„ ์†Œ๋ชจ๋„ ๋ณ€๊ฒฝ๋„ ํ•˜์ง€ ์•Š๊ณ , ํ˜น์€ ์–ด๋–ค ๊ฒƒ๋„ ์บก์ณํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— " -"์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "`Fn`์€ ์บก์ฒ˜๋œ ๊ฐ’์„ ์†Œ๋ชจ๋„ ๋ณ€๊ฒฝ๋„ ํ•˜์ง€ ์•Š๊ณ , ํ˜น์€ ์–ด๋–ค ๊ฒƒ๋„ ์บก์ณํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/generics/closures.md:32 msgid "" "`FnMut` is a subtype of `FnOnce`. `Fn` is a subtype of `FnMut` and `FnOnce`. I.e. you can use an\n" -"`FnMut` wherever an `FnOnce` is called for, and you can use an `Fn` wherever an `FnMut` or " -"`FnOnce`\n" +"`FnMut` wherever an `FnOnce` is called for, and you can use an `Fn` wherever an `FnMut` or `FnOnce`\n" "is called for." -msgstr "" -"`FnMut` ๋Š” `FnOnce`์˜ ํ•˜์œ„ํƒ€์ž…์ž…๋‹ˆ๋‹ค. `Fn`์€ `FnMut`๊ณผ `FnOnce`์˜ ํ•˜์œ„ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ฆ‰, `FnMut`๋Š” " -"`FnOnce`๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์ด๋ฉด ์–ด๋””์„œ๋‚˜ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ณ  `Fn`์€ `FnMut`์™€ `FnOnce`๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์ด๋ฉด ์–ด" -"๋””๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "`FnMut` ๋Š” `FnOnce`์˜ ํ•˜์œ„ํƒ€์ž…์ž…๋‹ˆ๋‹ค. `Fn`์€ `FnMut`๊ณผ `FnOnce`์˜ ํ•˜์œ„ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ฆ‰, `FnMut`๋Š” `FnOnce`๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์ด๋ฉด ์–ด๋””์„œ๋‚˜ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ณ  `Fn`์€ `FnMut`์™€ `FnOnce`๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์ด๋ฉด ์–ด๋””๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/generics/closures.md:36 msgid "`move` closures only implement `FnOnce`." @@ -9359,9 +8846,7 @@ msgstr "" msgid "" "This is a zero-cost abstraction: you get exactly the same result as if you had\n" "hand-coded the data structures without the abstraction." -msgstr "" -"์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š๋Š” (zero-cost) ์ถ”์ƒํ™” ์ž…๋‹ˆ๋‹ค: ๋Ÿฌ์ŠคํŠธ์˜ ์ œ๋„ˆ๋ฆญ์€ ์ถ”์ƒํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง" -"์ ‘ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์„ ์จ์„œ ์ฝ”๋”ฉํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." +msgstr "์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š๋Š” (zero-cost) ์ถ”์ƒํ™” ์ž…๋‹ˆ๋‹ค: ๋Ÿฌ์ŠคํŠธ์˜ ์ œ๋„ˆ๋ฆญ์€ ์ถ”์ƒํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์„ ์จ์„œ ์ฝ”๋”ฉํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค." #: src/generics/trait-objects.md:1 msgid "# Trait Objects" @@ -9389,9 +8874,7 @@ msgstr "" #: src/generics/trait-objects.md:18 msgid "However, how can we store a collection of mixed types which implement `Display`?" -msgstr "" -"๊ทธ๋Ÿฐ๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด `Display`๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…๋“ค์˜ ์ฝœ๋ ‰์…˜์„ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• " -"๊นŒ์š”?" +msgstr "๊ทธ๋Ÿฐ๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด `Display`๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…๋“ค์˜ ์ฝœ๋ ‰์…˜์„ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?" #: src/generics/trait-objects.md:20 msgid "" @@ -9456,9 +8939,7 @@ msgstr "" msgid "" "Similarly, you need a trait object if you want to return different types\n" "implementing a trait:" -msgstr "" -"๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•  ๋•Œ์—๋„ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ" -"๋‹ค:" +msgstr "๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ฐ™์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•  ๋•Œ์—๋„ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:" #: src/generics/trait-objects.md:72 msgid "" @@ -9486,8 +8967,7 @@ msgstr "# 3์ผ์ฐจ ์˜ค์ „ ์—ฐ์Šต๋ฌธ์ œ" #: src/exercises/day-3/morning.md:3 msgid "We will design a classical GUI library traits and trait objects." -msgstr "" -"์ด๋ฒˆ ์—ฐ์Šต๋ฌธ์ œ์—์„œ๋Š” ํŠธ๋ ˆ์ดํŠธ์™€ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ณ ์ „์ ์ธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." +msgstr "์ด๋ฒˆ ์—ฐ์Šต๋ฌธ์ œ์—์„œ๋Š” ํŠธ๋ ˆ์ดํŠธ์™€ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ณ ์ „์ ์ธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-3/simple-gui.md:1 msgid "# A Simple GUI Library" @@ -9497,9 +8977,7 @@ msgstr "# ๊ฐ„๋‹จํ•œ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ" msgid "" "Let us design a classical GUI library using our new knowledge of traits and\n" "trait objects." -msgstr "" -"์ด๋ฒˆ ์—ฐ์Šต๋ฌธ์ œ์—์„œ๋Š” ํŠธ๋ ˆ์ดํŠธ์™€ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ฐฐ์šด๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ ์ „์ ์ธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค" -"๊ณ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." +msgstr "์ด๋ฒˆ ์—ฐ์Šต๋ฌธ์ œ์—์„œ๋Š” ํŠธ๋ ˆ์ดํŠธ์™€ ํŠธ๋ ˆ์ดํŠธ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋ฐฐ์šด๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ ์ „์ ์ธ GUI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-3/simple-gui.md:6 msgid "We will have a number of widgets in our library:" @@ -9524,11 +9002,10 @@ msgstr "์œ„์ ฏ๋“ค์€ ๋ชจ๋‘ `Widget` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ” msgid "" "Copy the code below to , fill in the missing\n" "`draw_into` methods so that you implement the `Widget` trait:" -msgstr "" -"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•˜๊ณ  ๋ˆ„๋ฝ๋œ `draw_into`๋ฉ”์„œ๋“œ๋ฅผ ์ฑ„์›Œ ๋„ฃ์–ด `Widget` " -"ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์™„์„ฑํ•ด๋ด…์‹œ๋‹ค:" +msgstr "์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์— ๋ณต์‚ฌํ•˜๊ณ  ๋ˆ„๋ฝ๋œ `draw_into`๋ฉ”์„œ๋“œ๋ฅผ ์ฑ„์›Œ ๋„ฃ์–ด `Widget` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์™„์„ฑํ•ด๋ด…์‹œ๋‹ค:" -#: src/exercises/day-3/simple-gui.md:18 src/exercises/day-3/safe-ffi-wrapper.md:25 +#: src/exercises/day-3/simple-gui.md:18 +#: src/exercises/day-3/safe-ffi-wrapper.md:25 msgid "" "```rust,should_panic\n" "// TODO: remove this when you're done with your implementation.\n" @@ -9542,13 +9019,15 @@ msgid "" " fn width(&self) -> usize;" msgstr "" -#: src/exercises/day-3/simple-gui.md:26 src/exercises/day-3/solutions-morning.md:27 +#: src/exercises/day-3/simple-gui.md:26 +#: src/exercises/day-3/solutions-morning.md:27 msgid "" " /// Draw the widget into a buffer.\n" " fn draw_into(&self, buffer: &mut dyn std::fmt::Write);" msgstr "" -#: src/exercises/day-3/simple-gui.md:29 src/exercises/day-3/solutions-morning.md:30 +#: src/exercises/day-3/simple-gui.md:29 +#: src/exercises/day-3/solutions-morning.md:30 msgid "" " /// Draw the widget on standard output.\n" " fn draw(&self) {\n" @@ -9559,14 +9038,16 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:37 src/exercises/day-3/solutions-morning.md:38 +#: src/exercises/day-3/simple-gui.md:37 +#: src/exercises/day-3/solutions-morning.md:38 msgid "" "pub struct Label {\n" " label: String,\n" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:41 src/exercises/day-3/solutions-morning.md:42 +#: src/exercises/day-3/simple-gui.md:41 +#: src/exercises/day-3/solutions-morning.md:42 msgid "" "impl Label {\n" " fn new(label: &str) -> Label {\n" @@ -9577,7 +9058,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:49 src/exercises/day-3/solutions-morning.md:50 +#: src/exercises/day-3/simple-gui.md:49 +#: src/exercises/day-3/solutions-morning.md:50 msgid "" "pub struct Button {\n" " label: Label,\n" @@ -9585,7 +9067,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:54 src/exercises/day-3/solutions-morning.md:55 +#: src/exercises/day-3/simple-gui.md:54 +#: src/exercises/day-3/solutions-morning.md:55 msgid "" "impl Button {\n" " fn new(label: &str, callback: Box) -> Button {\n" @@ -9597,7 +9080,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:63 src/exercises/day-3/solutions-morning.md:64 +#: src/exercises/day-3/simple-gui.md:63 +#: src/exercises/day-3/solutions-morning.md:64 msgid "" "pub struct Window {\n" " title: String,\n" @@ -9605,7 +9089,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/simple-gui.md:68 src/exercises/day-3/solutions-morning.md:69 +#: src/exercises/day-3/simple-gui.md:68 +#: src/exercises/day-3/solutions-morning.md:69 msgid "" "impl Window {\n" " fn new(title: &str) -> Window {\n" @@ -9616,7 +9101,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-3/simple-gui.md:76 src/exercises/day-3/solutions-morning.md:77 +#: src/exercises/day-3/simple-gui.md:76 +#: src/exercises/day-3/solutions-morning.md:77 msgid "" " fn add_widget(&mut self, widget: Box) {\n" " self.widgets.push(widget);\n" @@ -9700,8 +9186,7 @@ msgid "" "formatting operators. In particular, notice how you can pad with different\n" "characters (here a `'/'`) and how you can control alignment:" msgstr "" -"ํ…์ŠคํŠธ๋ฅผ ์ค„๋งž์ถค ํ•ด์„œ ๊ทธ๋ฆฌ๋ ค๋ฉด [fill/alignment](https://doc.rust-lang.org/std/fmt/index." -"html#fillalignment)๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. \n" +"ํ…์ŠคํŠธ๋ฅผ ์ค„๋งž์ถค ํ•ด์„œ ๊ทธ๋ฆฌ๋ ค๋ฉด [fill/alignment](https://doc.rust-lang.org/std/fmt/index.html#fillalignment)๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. \n" "ํŠน์ˆ˜ ๋ฌธ์ž(์—ฌ๊ธฐ์„œ๋Š” '/')๋กœ ํŒจ๋”ฉ์„ ์ฃผ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ •๋ ฌ์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-3/simple-gui.md:140 @@ -9776,8 +9261,7 @@ msgid "" msgstr "" "* ํŒจ๋‹‰์€ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๊ณ  ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.\n" " * ํŒจ๋‹‰์€ ํ”„๋กœ๊ทธ๋žจ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.\n" -"* ์ถฉ๋Œ(ํฌ๋ž˜์‹œ)๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํŒจ๋‹‰์„ ์œ ๋ฐœํ•˜์ง€ ์•Š๋Š” API(`Vec::get`๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ" -"๋‹ค." +"* ์ถฉ๋Œ(ํฌ๋ž˜์‹œ)๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํŒจ๋‹‰์„ ์œ ๋ฐœํ•˜์ง€ ์•Š๋Š” API(`Vec::get`๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค." #: src/error-handling/panic-unwind.md:1 msgid "# Catching the Stack Unwinding" @@ -9785,8 +9269,7 @@ msgstr "# ์Šคํƒ ๋˜๊ฐ๊ธฐ" #: src/error-handling/panic-unwind.md:3 msgid "By default, a panic will cause the stack to unwind. The unwinding can be caught:" -msgstr "" -"๊ธฐ๋ณธ์ ์œผ๋กœ, ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด ์Šคํƒ ๋˜๊ฐ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ๋˜๊ฐ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์บ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:" +msgstr "๊ธฐ๋ณธ์ ์œผ๋กœ, ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด ์Šคํƒ ๋˜๊ฐ๊ธฐ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ๋˜๊ฐ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์บ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค:" #: src/error-handling/panic-unwind.md:5 msgid "" @@ -9828,9 +9311,7 @@ msgstr "# `Result`๋ฅผ ์ด์šฉํ•œ ๊ตฌ์กฐํ™”๋œ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ" msgid "" "We have already seen the `Result` enum. This is used pervasively when errors are\n" "expected as part of normal operation:" -msgstr "" -"์—ฌ๋Ÿฌ๋ถ„์€ ์ด๋ฏธ `Result` ์—ด๊ฑฐํ˜•์„ ๋ช‡ ๋ฒˆ ๋ดค์Šต๋‹ˆ๋‹ค. ์ด ํƒ€์ž…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ์ˆ˜ํ–‰ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ " -"์žˆ๋Š” ์˜ค๋ฅ˜๊ฐ’๋“ค์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:" +msgstr "์—ฌ๋Ÿฌ๋ถ„์€ ์ด๋ฏธ `Result` ์—ด๊ฑฐํ˜•์„ ๋ช‡ ๋ฒˆ ๋ดค์Šต๋‹ˆ๋‹ค. ์ด ํƒ€์ž…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ์ˆ˜ํ–‰ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๊ฐ’๋“ค์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:" #: src/error-handling/result.md:6 msgid "" @@ -9860,22 +9341,15 @@ msgstr "" #: src/error-handling/result.md:27 msgid "" " * As with `Option`, the successful value sits inside of `Result`, forcing the developer to\n" -" explicitly extract it. This encourages error checking. In the case where an error should never " -"happen,\n" +" explicitly extract it. This encourages error checking. In the case where an error should never happen,\n" " `unwrap()` or `expect()` can be called, and this is a signal of the developer intent too. \n" -" * `Result` documentation is a recommended read. Not during the course, but it is worth " -"mentioning. \n" -" It contains a lot of convenience methods and functions that help functional-style " -"programming. \n" +" * `Result` documentation is a recommended read. Not during the course, but it is worth mentioning. \n" +" It contains a lot of convenience methods and functions that help functional-style programming. \n" " \n" "" msgstr "" -" * `Option`์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ์˜ ๊ฐ’์€ `Result` ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๊ฐœ๋ฐœ์ž๋Š” ๋ช…์‹œ์ ์œผ" -"๋กœ ์ด๋ฅผ ์ถ”์ถœํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฐ’์„ ์ฝ๊ธฐ ์ „์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•˜๋„๋ก ์œ ๋„ํ•˜" -"๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ์ ˆ๋Œ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด `unwrap()`์ด๋‚˜ `expect()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, " -"์ด๋Š” ๊ฐœ๋ฐœ์ž์˜ ์˜๋„(_์—ญ์ฃผ_: ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์—†์Œ)์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.\n" -" * ์ˆ˜์—…์ค‘์—” ์•„๋‹ˆ์ง€๋งŒ `Result`์˜ API ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์— ๋„" -"์›€์ด ๋˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ์™€ ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +" * `Option`์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ์˜ ๊ฐ’์€ `Result` ๋‚ด๋ถ€์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๊ฐœ๋ฐœ์ž๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ด๋ฅผ ์ถ”์ถœํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฐ’์„ ์ฝ๊ธฐ ์ „์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ์ ˆ๋Œ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด `unwrap()`์ด๋‚˜ `expect()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๊ฐœ๋ฐœ์ž์˜ ์˜๋„(_์—ญ์ฃผ_: ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์—†์Œ)์„ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.\n" +" * ์ˆ˜์—…์ค‘์—” ์•„๋‹ˆ์ง€๋งŒ `Result`์˜ API ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์— ๋„์›€์ด ๋˜๋Š” ํŽธ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ์™€ ํ•จ์ˆ˜๋ฅผ ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" " \n" "" @@ -9958,11 +9432,11 @@ msgid "" "```" msgstr "" -#: src/error-handling/try-operator.md:52 src/error-handling/converting-error-types-example.md:52 +#: src/error-handling/try-operator.md:52 +#: src/error-handling/converting-error-types-example.md:52 msgid "" "* The `username` variable can be either `Ok(string)` or `Err(error)`.\n" -"* Use the `fs::write` call to test out the different scenarios: no file, empty file, file with " -"username." +"* Use the `fs::write` call to test out the different scenarios: no file, empty file, file with username." msgstr "" "* `username` ๋ณ€์ˆ˜๋Š” `Ok(string)`์ด๊ฑฐ๋‚˜ `Err(error)`์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* `fs::write` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์ด ์—†๊ฑฐ๋‚˜, ๋น„์—ˆ๊ฑฐ๋‚˜, ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ ๋“ฑ์„ ํ…Œ์ŠคํŠธํ•ด ๋ด…๋‹ˆ๋‹ค." @@ -10070,17 +9544,11 @@ msgstr "" #: src/error-handling/converting-error-types-example.md:55 msgid "" -"It is good practice for all error types to implement `std::error::Error`, which requires `Debug` " -"and\n" -"`Display`. It's generally helpful for them to implement `Clone` and `Eq` too where possible, to " -"make\n" +"It is good practice for all error types to implement `std::error::Error`, which requires `Debug` and\n" +"`Display`. It's generally helpful for them to implement `Clone` and `Eq` too where possible, to make\n" "life easier for tests and consumers of your library. In this case we can't easily do so, because\n" "`io::Error` doesn't implement them." -msgstr "" -"์—๋Ÿฌ ํƒ€์ž…์ด `std::error::Error`๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์Šต๊ด€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด `Debug`์™€ `Display` " -"ํŠธ๋ ˆ์ดํŠธ ๋˜ํ•œ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด `Clone`๊ณผ `Eq` ํŠธ๋ ˆ์ดํŠธ๋„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ " -"๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์•„์งˆ ๊ฒ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ์˜ˆ์ œ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ํž˜๋“ญ๋‹ˆ" -"๋‹ค. ์™œ๋ƒํ•˜๋ฉด `io::Error`๋Š” ์ด ํŠธ๋ ˆ์ดํŠธ๋“ค์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." +msgstr "์—๋Ÿฌ ํƒ€์ž…์ด `std::error::Error`๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์Šต๊ด€์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด `Debug`์™€ `Display` ํŠธ๋ ˆ์ดํŠธ ๋˜ํ•œ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด `Clone`๊ณผ `Eq` ํŠธ๋ ˆ์ดํŠธ๋„ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜์„ธ์š”. ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์•„์งˆ ๊ฒ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ์ด ์˜ˆ์ œ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ ํž˜๋“ญ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด `io::Error`๋Š” ์ด ํŠธ๋ ˆ์ดํŠธ๋“ค์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/error-handling/deriving-error-enums.md:1 msgid "# Deriving Error Enums" @@ -10090,9 +9558,7 @@ msgstr "# ๋˜๋‹ค๋ฅธ ์˜ค๋ฅ˜ ์—ด๊ฑฐํ˜•" msgid "" "The [thiserror](https://docs.rs/thiserror/) crate is a popular way to create an\n" "error enum like we did on the previous page:" -msgstr "" -"[thiserror](https://docs.rs/thiserror/)๋Š”, ์ด์ „ ํŽ˜์ด์ง€์—์„œ ๋ณด์•˜๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ์—ด๊ฑฐํ˜•์„ ์‰ฝ๊ฒŒ ๋งŒ" -"๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ์œ ๋ช…ํ•œ ํฌ๋ ˆ์ดํŠธ ์ž…๋‹ˆ๋‹ค." +msgstr "[thiserror](https://docs.rs/thiserror/)๋Š”, ์ด์ „ ํŽ˜์ด์ง€์—์„œ ๋ณด์•˜๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ์—ด๊ฑฐํ˜•์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ์œ ๋ช…ํ•œ ํฌ๋ ˆ์ดํŠธ ์ž…๋‹ˆ๋‹ค." #: src/error-handling/deriving-error-enums.md:6 msgid "" @@ -10125,7 +9591,8 @@ msgid "" "}" msgstr "" -#: src/error-handling/deriving-error-enums.md:28 src/error-handling/dynamic-errors.md:25 +#: src/error-handling/deriving-error-enums.md:28 +#: src/error-handling/dynamic-errors.md:25 msgid "" "fn main() {\n" " //fs::write(\"config.dat\", \"\").unwrap();\n" @@ -10140,19 +9607,13 @@ msgstr "" #: src/error-handling/deriving-error-enums.md:39 msgid "" "`thiserror`'s derive macro automatically implements `std::error::Error`, and optionally `Display`\n" -"(if the `#[error(...)]` attributes are provided) and `From` (if the `#[from]` attribute is " -"added).\n" +"(if the `#[error(...)]` attributes are provided) and `From` (if the `#[from]` attribute is added).\n" "It also works for structs." -msgstr "" -"`thiserror`์˜ derive ๋งคํฌ๋กœ๋ฅผ ์ด์šฉํ•˜๋ฉด `std::error::Error`๊ณผ `Display`(๋งŒ์•ฝ `#[error(...)]` ์–ดํŠธ๋ฆฌ" -"๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ), `From`(๋งŒ์•ฝ `#[from]` ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ) ํŠธ๋ ˆ์ดํŠธ๋“ค์ด ์ž๋™์œผ๋กœ ๊ตฌํ˜„" -"์ด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." +msgstr "`thiserror`์˜ derive ๋งคํฌ๋กœ๋ฅผ ์ด์šฉํ•˜๋ฉด `std::error::Error`๊ณผ `Display`(๋งŒ์•ฝ `#[error(...)]` ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ), `From`(๋งŒ์•ฝ `#[from]` ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ) ํŠธ๋ ˆ์ดํŠธ๋“ค์ด ์ž๋™์œผ๋กœ ๊ตฌํ˜„์ด ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." #: src/error-handling/deriving-error-enums.md:43 msgid "It doesn't affect your public API, which makes it good for libraries." -msgstr "" -"์ด ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฐ–์œผ๋กœ ๋…ธ์ถœ๋˜๋Š” API๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ์—๋Š” ์ด๊ฒŒ ์ค‘" -"์š”ํ•˜์ฃ ." +msgstr "์ด ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋ฐ–์œผ๋กœ ๋…ธ์ถœ๋˜๋Š” API๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๊ฒฝ์šฐ์—๋Š” ์ด๊ฒŒ ์ค‘์š”ํ•˜์ฃ ." #: src/error-handling/dynamic-errors.md:1 msgid "# Dynamic Error Types" @@ -10162,9 +9623,7 @@ msgstr "# ๋™์ ์ธ ์—๋Ÿฌ ํƒ€์ž…" msgid "" "Sometimes we want to allow any type of error to be returned without writing our own enum covering\n" "all the different possibilities. `std::error::Error` makes this easy." -msgstr "" -"๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š”, ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ์ผ์ผํžˆ ์—ด๊ฑฐํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ์ข…๋ฅ˜์˜ ์—๋Ÿฌ๋ผ๋„ ์ƒ๊ด€์—†์ด ๋ฆฌํ„ดํ•˜" -"๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. `std::error::Error`๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค." +msgstr "๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š”, ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ์ผ์ผํžˆ ์—ด๊ฑฐํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ์ข…๋ฅ˜์˜ ์—๋Ÿฌ๋ผ๋„ ์ƒ๊ด€์—†์ด ๋ฆฌํ„ดํ•˜๊ณ  ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. `std::error::Error`๋ฅผ ์ด์šฉํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค." #: src/error-handling/dynamic-errors.md:6 msgid "" @@ -10196,17 +9655,11 @@ msgstr "" #: src/error-handling/dynamic-errors.md:36 msgid "" -"This saves on code, but gives up the ability to cleanly handle different error cases differently " -"in\n" -"the program. As such it's generally not a good idea to use `Box` in the public API of " -"a\n" -"library, but it can be a good option in a program where you just want to display the error " -"message\n" +"This saves on code, but gives up the ability to cleanly handle different error cases differently in\n" +"the program. As such it's generally not a good idea to use `Box` in the public API of a\n" +"library, but it can be a good option in a program where you just want to display the error message\n" "somewhere." -msgstr "" -"์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์—๋Ÿฌ๋ฅผ ๊ตฌ๋ณ„ํ•˜์—ฌ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” " -"๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด ์ง‘๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์—, `Box`๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ API๋กœ ๋…ธ์ถœํ•˜๋Š”๊ฒŒ ์ข‹์€ ๋””์ž์ธ์€ ์•„๋‹™๋‹ˆ" -"๋‹ค. ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ, ๊ทธ์ € ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์ œํ•œ๋œ ์ƒํ™ฉ์—์„œ๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์—๋Ÿฌ๋ฅผ ๊ตฌ๋ณ„ํ•˜์—ฌ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด ์ง‘๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์—, `Box`๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ API๋กœ ๋…ธ์ถœํ•˜๋Š”๊ฒŒ ์ข‹์€ ๋””์ž์ธ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ, ๊ทธ์ € ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์ œํ•œ๋œ ์ƒํ™ฉ์—์„œ๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/error-handling/error-contexts.md:1 msgid "# Adding Context to Errors" @@ -10217,10 +9670,7 @@ msgid "" "The widely used [anyhow](https://docs.rs/anyhow/) crate can help you add\n" "contextual information to your errors and allows you to have fewer\n" "custom error types:" -msgstr "" -"[anyhow](https://docs.rs/anyhow/) ํฌ๋ ˆ์ดํŠธ๋Š” ์—๋Ÿฌ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฌธ๋งฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด " -"๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ๋งฅ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ค๋ฅ˜ ํƒ€์ž…์„ ๋งŽ์ด ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” " -"๋ถˆํŽธํ•จ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "[anyhow](https://docs.rs/anyhow/) ํฌ๋ ˆ์ดํŠธ๋Š” ์—๋Ÿฌ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฌธ๋งฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋ฅผ ์ด์šฉํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋ฌธ๋งฅ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์‚ฌ์šฉ์ž ์ •์˜ ์˜ค๋ฅ˜ ํƒ€์ž…์„ ๋งŽ์ด ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/error-handling/error-contexts.md:7 msgid "" @@ -10260,8 +9710,7 @@ msgstr "" #: src/error-handling/error-contexts.md:35 msgid "" "* `anyhow::Result` is a type alias for `Result`.\n" -"* `anyhow::Error` is essentially a wrapper around `Box`. As such it's again generally " -"not\n" +"* `anyhow::Error` is essentially a wrapper around `Box`. As such it's again generally not\n" " a good choice for the public API of a library, but is widely used in applications.\n" "* Actual error type inside of it can be extracted for examination if necessary.\n" "* Functionality provided by `anyhow::Result` may be familiar to Go developers, as it provides\n" @@ -10340,9 +9789,7 @@ msgstr "# ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ" msgid "" "Unit tests are often put in a nested module (run tests on the\n" "[Playground](https://play.rust-lang.org/)):" -msgstr "" -"๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์›๋ž˜ ๋ชจ๋“ˆ ๋ฐ‘์— ์„œ๋ธŒ ๋ชจ๋“ˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ([ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://play." -"rust-lang.org/)์—์„œ ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ์š”):" +msgstr "๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์›๋ž˜ ๋ชจ๋“ˆ ๋ฐ‘์— ์„œ๋ธŒ ๋ชจ๋“ˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ([ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ](https://play.rust-lang.org/)์—์„œ ๋‹ค์Œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•ด ๋ณด์„ธ์š”):" #: src/testing/test-modules.md:6 msgid "" @@ -10405,14 +9852,11 @@ msgstr "" msgid "" "* Code blocks in `///` comments are automatically seen as Rust code.\n" "* The code will be compiled and executed as part of `cargo test`.\n" -"* Test the above code on the [Rust Playground](https://play.rust-lang.org/?" -"version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0)." +"* Test the above code on the [Rust Playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0)." msgstr "" "* `///` ์ฃผ์„์•ˆ์˜ ์ฝ”๋“œ ๋ธ”๋ก์€ ์ž๋™์œผ๋กœ ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ๋กœ ์ธ์‹๋ฉ๋‹ˆ๋‹ค.\n" "* ์ด ์ฝ”๋“œ ๋ธ”๋ก์€ `cargo test` ํ˜ธ์ถœํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ๋˜๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.\n" -"* ์œ„ ์ฝ”๋“œ๋ฅผ [Rust Playground](https://play.rust-lang.org/?" -"version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0)์—์„œ ํ…Œ์ŠคํŠธ ํ•ด ๋ณด์‹œ๊ธฐ " -"๋ฐ”๋ž๋‹ˆ๋‹ค." +"* ์œ„ ์ฝ”๋“œ๋ฅผ [Rust Playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0)์—์„œ ํ…Œ์ŠคํŠธ ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/testing/integration-tests.md:1 msgid "# Integration Tests" @@ -10459,25 +9903,19 @@ msgid "" "* **Unsafe Rust:** can trigger undefined behavior if preconditions are violated." msgstr "" "* **์•ˆ์ „ํ•œ ๋Ÿฌ์ŠคํŠธ:** ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๋ถˆ๊ฐ€๋Šฅ, ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘ ์—†์Œ.\n" -"* **์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ:** ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์€์ฑ„๋กœ ์‚ฌ์šฉ๋˜๋ฉด ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ์œ ๋ฐœํ•  " -"์ˆ˜ ์žˆ์Œ." +"* **์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ:** ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์€์ฑ„๋กœ ์‚ฌ์šฉ๋˜๋ฉด ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ." #: src/unsafe.md:8 msgid "" "We will be seeing mostly safe Rust in this course, but it's important to know\n" "what Unsafe Rust is." -msgstr "" -"์ด ๊ฐ•์˜๋Š” ๋Œ€๋ถ€๋ถ„ ์•ˆ์ „ํ•œ ๋Ÿฌ์ŠคํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์ง€๋งŒ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” ์•Œ์•„ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ" -"๋‹ค." +msgstr "์ด ๊ฐ•์˜๋Š” ๋Œ€๋ถ€๋ถ„ ์•ˆ์ „ํ•œ ๋Ÿฌ์ŠคํŠธ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์ง€๋งŒ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” ์•Œ์•„ ๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." #: src/unsafe.md:11 msgid "" "Unsafe code is usually small and isolated, and its correctness should be carefully\n" "documented. It is usually wrapped in a safe abstraction layer." -msgstr "" -"๋ณดํ†ต, ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉฐ, ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๊ฐ€ ์™œ ์ž˜ ์ž‘๋™ํ•˜" -"๋Š”์ง€์— ๋Œ€ํ•ด ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ฌธ์„œํ™”๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๋งŽ์€ ๊ฒฝ์šฐ ์•ˆ์ „ํ•œ ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ถ”์ƒํ™”" -"๋ฅผ ์‹œํ‚จ ํ›„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค." +msgstr "๋ณดํ†ต, ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ๋Š” ํฌ๊ธฐ๊ฐ€ ์ž‘์œผ๋ฉฐ, ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๊ฐ€ ์™œ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์„ธ๋ฐ€ํ•˜๊ฒŒ ๋ฌธ์„œํ™”๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๋งŽ์€ ๊ฒฝ์šฐ ์•ˆ์ „ํ•œ ๋Ÿฌ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ์ถ”์ƒํ™”๋ฅผ ์‹œํ‚จ ํ›„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค." #: src/unsafe.md:14 msgid "Unsafe Rust gives you access to five new capabilities:" @@ -10502,21 +9940,14 @@ msgid "" "We will briefly cover unsafe capabilities next. For full details, please see\n" "[Chapter 19.1 in the Rust Book](https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html)\n" "and the [Rustonomicon](https://doc.rust-lang.org/nomicon/)." -msgstr "" -"์œ„ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [๋Ÿฌ์ŠคํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, 19.1์ ˆ](https://doc." -"rust-lang.org/book/ch19-01-unsafe-rust.html)๊ณผ [Rustonomicon](https://doc.rust-lang.org/nomicon/)" -"๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." +msgstr "์œ„ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ [๋Ÿฌ์ŠคํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, 19.1์ ˆ](https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html)๊ณผ [Rustonomicon](https://doc.rust-lang.org/nomicon/)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”." #: src/unsafe.md:28 msgid "" "Unsafe Rust does not mean the code is incorrect. It means that developers have\n" "turned off the compiler safety features and have to write correct code by\n" "themselves. It means the compiler no longer enforces Rust's memory-safety rules." -msgstr "" -"์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ๋ผ๊ณ  ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋ถ€์ •ํ™• ํ•˜๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค์˜ ์˜๋ฏธ๋Š” ์ปด" -"ํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” ์•ˆ์ „ ์žฅ์น˜๋“ค์ด ๊บผ์ง„ ์ƒํƒœ์ด๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ์ •ํ™•ํ•˜๊ณ  ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•จ" -"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋” ์ด์ƒ ๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „๊ณผ ๊ด€๋ จ๋œ ๊ทœ์น™๋“ค์„ ์ ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ" -"์ž…๋‹ˆ๋‹ค." +msgstr "์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ๋ผ๊ณ  ํ•ด์„œ ์ฝ”๋“œ๊ฐ€ ๋ถ€์ •ํ™• ํ•˜๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค์˜ ์˜๋ฏธ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” ์•ˆ์ „ ์žฅ์น˜๋“ค์ด ๊บผ์ง„ ์ƒํƒœ์ด๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ์ •ํ™•ํ•˜๊ณ  ์•ˆ์ „ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋” ์ด์ƒ ๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „๊ณผ ๊ด€๋ จ๋œ ๊ทœ์น™๋“ค์„ ์ ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/unsafe/raw-pointers.md:1 msgid "# Dereferencing Raw Pointers" @@ -10541,8 +9972,7 @@ msgstr "" #: src/unsafe/raw-pointers.md:12 msgid "" -" // Safe because r1 and r2 were obtained from references and so are guaranteed to be non-null " -"and\n" +" // Safe because r1 and r2 were obtained from references and so are guaranteed to be non-null and\n" " // properly aligned, the objects underlying the references from which they were obtained are\n" " // live throughout the whole unsafe block, and they are not accessed either through the\n" " // references or concurrently through any other pointers.\n" @@ -10554,10 +9984,8 @@ msgid "" "}\n" "```" msgstr "" -" // ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. r1๊ณผ r2๋Š” ์ฐธ์กฐ๋กœ ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ์กŒ๊ธฐ ๋•Œ๋ฌธ์— null์ด ์•„๋‹ˆ๋ฉฐ align์ด ๋งž๋‹ค" -"๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.\n" -" // ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋“ค์€ unsafe ๋ธ”๋Ÿญ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ด์•„์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ์ฒด๋“ค" -"์€ r1๊ณผ r2๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ\n" +" // ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. r1๊ณผ r2๋Š” ์ฐธ์กฐ๋กœ ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ์กŒ๊ธฐ ๋•Œ๋ฌธ์— null์ด ์•„๋‹ˆ๋ฉฐ align์ด ๋งž๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.\n" +" // ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋“ค์€ unsafe ๋ธ”๋Ÿญ์ด ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ์— ์‚ด์•„์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ์ฒด๋“ค์€ r1๊ณผ r2๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ\n" " // ์–ด๋–ค ์ฐธ์กฐ๋‚˜ ํฌ์ธํ„ฐ๋กœ๋„ ์ ‘๊ทผ์ด ์•ˆ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.\n" " unsafe {\n" " println!(\"r1 is: {}\", *r1);\n" @@ -10572,17 +10000,13 @@ msgid "" "It is good practice (and required by the Android Rust style guide) to write a comment for each\n" "`unsafe` block explaining how the code inside it satisfies the safety requirements of the unsafe\n" "operations it is doing." -msgstr "" -"๋ชจ๋“  `unsafe` ๋ธ”๋Ÿญ์— ๋Œ€ํ•ด ์™œ ๊ทธ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•œ์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ฃผ์„์œผ๋กœ ๋‹ค๋Š” ๊ฒƒ์€ ์ข‹์€ ์Šต๊ด€์ž…๋‹ˆ๋‹ค(์‚ฌ" -"์‹ค ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋Ÿฌ์ŠคํŠธ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ด๊ฒŒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค)." +msgstr "๋ชจ๋“  `unsafe` ๋ธ”๋Ÿญ์— ๋Œ€ํ•ด ์™œ ๊ทธ ์ฝ”๋“œ๊ฐ€ ์•ˆ์ „ํ•œ์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ฃผ์„์œผ๋กœ ๋‹ค๋Š” ๊ฒƒ์€ ์ข‹์€ ์Šต๊ด€์ž…๋‹ˆ๋‹ค(์‚ฌ์‹ค ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๋Ÿฌ์ŠคํŠธ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ๋Š” ์ด๊ฒŒ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค)." #: src/unsafe/raw-pointers.md:30 msgid "" "In the case of pointer dereferences, this means that the pointers must be\n" "[_valid_](https://doc.rust-lang.org/std/ptr/index.html#safety), i.e.:" -msgstr "" -"ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ๋ฅผ ํ•  ๊ฒฝ์šฐ, ํฌ์ธํ„ฐ๊ฐ€ [_์œ ํšจ_](https://doc.rust-lang.org/std/ptr/index.html#safety)ํ•ด" -"์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:" +msgstr "ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ๋ฅผ ํ•  ๊ฒฝ์šฐ, ํฌ์ธํ„ฐ๊ฐ€ [_์œ ํšจ_](https://doc.rust-lang.org/std/ptr/index.html#safety)ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:" #: src/unsafe/raw-pointers.md:33 msgid "" @@ -10597,8 +10021,7 @@ msgstr "" "* ํฌ์ธํ„ฐ๋Š” ๋”ฐ๋ผ๊ฐ€๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (๊ฐ์ฒด์˜ ์–ด๋Š ํ•œ ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).\n" "* ์ด๋ฏธ ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.\n" "* ๊ฐ™์€ ์œ„์น˜์— ๋Œ€ํ•ด ๋™์‹œ์ ์ธ ์ ‘๊ทผ์ด ์žˆ์œผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.\n" -"* ์ฐธ์กฐ๋ฅผ ์บ์ŠคํŒ… ํ•ด์„œ ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ๊ทธ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋Š” ์‚ด์•„ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ๊ฐ์ฒด์˜ ๋ฉ”" -"๋ชจ๋ฆฌ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์ฐธ์กฐ๊ฐ€ ํ•˜๋‚˜๋„ ์—†์–ดํ– ํ•ฉ๋‹ˆ๋‹ค." +"* ์ฐธ์กฐ๋ฅผ ์บ์ŠคํŒ… ํ•ด์„œ ํฌ์ธํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ๊ทธ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋Š” ์‚ด์•„ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์ฐธ์กฐ๊ฐ€ ํ•˜๋‚˜๋„ ์—†์–ดํ– ํ•ฉ๋‹ˆ๋‹ค." #: src/unsafe/raw-pointers.md:40 msgid "In most cases the pointer must also be properly aligned." @@ -10660,13 +10083,9 @@ msgstr "" #: src/unsafe/mutable-static-variables.md:32 msgid "" -"Using a mutable static is generally a bad idea, but there are some cases where it might make " -"sense\n" +"Using a mutable static is generally a bad idea, but there are some cases where it might make sense\n" "in low-level `no_std` code, such as implementing a heap allocator or working with some C APIs." -msgstr "" -"์ผ๋ฐ˜์ ์œผ๋กœ ์ด์•ผ๊ธฐ ํ•ด์„œ, ์ •์  ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋Š” ๊ฒƒ์€ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ `no_std`์™€ ๊ฐ™" -"์€ ์ €์ˆ˜์ค€ ์ฝ”๋”ฉ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํž™ ํ• ๋‹น๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, C API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” " -"๊ฒŒ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค." +msgstr "์ผ๋ฐ˜์ ์œผ๋กœ ์ด์•ผ๊ธฐ ํ•ด์„œ, ์ •์  ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋Š” ๊ฒƒ์€ ์ข‹์€ ์•„์ด๋””์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ `no_std`์™€ ๊ฐ™์€ ์ €์ˆ˜์ค€ ์ฝ”๋”ฉ์„ ํ•  ๊ฒฝ์šฐ์—๋Š” ํ•„์š”ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํž™ ํ• ๋‹น๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, C API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค." #: src/unsafe/unions.md:1 msgid "# Unions" @@ -10674,9 +10093,7 @@ msgstr "# ์œ ๋‹ˆ์˜จ" #: src/unsafe/unions.md:3 msgid "Unions are like enums, but you need to track the active field yourself:" -msgstr "" -"์œ ๋‹ˆ์˜จ ํƒ€์ž…์€ ์—ด๊ฑฐํ˜•(enum)๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์–ด๋–ค ํ•„๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ" -"๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ถ”์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์œ ๋‹ˆ์˜จ ํƒ€์ž…์€ ์—ด๊ฑฐํ˜•(enum)๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์–ด๋–ค ํ•„๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ถ”์ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." #: src/unsafe/unions.md:5 msgid "" @@ -10700,22 +10117,16 @@ msgstr "" #: src/unsafe/unions.md:21 msgid "" -"Unions are very rarely needed in Rust as you can usually use an enum. They are occasionally " -"needed\n" +"Unions are very rarely needed in Rust as you can usually use an enum. They are occasionally needed\n" "for interacting with C library APIs." -msgstr "" -"๋Ÿฌ์ŠคํŠธ์—๋Š” ์—ด๊ฑฐํ˜•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋‹ˆ์˜จ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. ์œ ๋‹ˆ์˜จ์€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๋ฅผ " -"์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ์—๋Š” ์—ด๊ฑฐํ˜•์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋‹ˆ์˜จ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค. ์œ ๋‹ˆ์˜จ์€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค." #: src/unsafe/unions.md:24 msgid "" "If you just want to reinterpret bytes as a different type, you probably want\n" "[`std::mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn.transmute.html) or a safe\n" "wrapper such as the [`zerocopy`](https://crates.io/crates/zerocopy) crate." -msgstr "" -"๋ฐ”์ดํŠธ๋“ค์„ ํŠน์ • ํƒ€์ž…์œผ๋กœ ์žฌํ•ด์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `std::mem::transmute`](https://doc.rust-lang.org/" -"stable/std/mem/fn.transmute.html)๋‚˜ ์ข€ ๋” ์•ˆ์ „ํ•œ [`zerocopy`](https://crates.io/crates/zerocopy) ํฌ" -"๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”." +msgstr "๋ฐ”์ดํŠธ๋“ค์„ ํŠน์ • ํƒ€์ž…์œผ๋กœ ์žฌํ•ด์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `std::mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn.transmute.html)๋‚˜ ์ข€ ๋” ์•ˆ์ „ํ•œ [`zerocopy`](https://crates.io/crates/zerocopy) ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”." #: src/unsafe/calling-unsafe-functions.md:1 msgid "# Calling Unsafe Functions" @@ -10725,9 +10136,7 @@ msgstr "# ์•ˆ์ „ํ•˜์ง€ ์•Š์€' ํ•จ์ˆ˜ ํ˜ธ์ถœ" msgid "" "A function or method can be marked `unsafe` if it has extra preconditions you\n" "must uphold to avoid undefined behaviour:" -msgstr "" -"ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์œผ๋กœ ๋น ์ง€์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ์ „์ œ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ" -"์šฐ, ๊ทธ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ `unsafe`๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์œผ๋กœ ๋น ์ง€์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ์ „์ œ ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ทธ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ `unsafe`๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/unsafe/calling-unsafe-functions.md:6 msgid "" @@ -10746,8 +10155,7 @@ msgid "" " println!(\"emoji: {}\", emojis.get_unchecked(7..11));\n" " }" msgstr "" -" // ์ธ๋ฑ์Šค๋“ค์ด ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์žˆ์œผ๋ฉฐ, ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์Šค์˜ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๊ณ , UTF-8 ์‹œํ€€์Šค์˜ ๋ฒ”์œ„ ์•ˆ" -"์—\n" +" // ์ธ๋ฑ์Šค๋“ค์ด ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ์žˆ์œผ๋ฉฐ, ๋ฌธ์ž์—ด ์Šฌ๋ผ์ด์Šค์˜ ๋ฒ”์œ„ ์•ˆ์— ์žˆ๊ณ , UTF-8 ์‹œํ€€์Šค์˜ ๋ฒ”์œ„ ์•ˆ์—\n" " // ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.\n" " unsafe {\n" " println!(\"emoji: {}\", emojis.get_unchecked(0..4));\n" @@ -10781,11 +10189,9 @@ msgstr "# '์•ˆ์ „ํ•˜์ง€ ์•Š์€' ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๊ธฐ" #: src/unsafe/writing-unsafe-functions.md:3 msgid "" -"You can mark your own functions as `unsafe` if they require particular conditions to avoid " -"undefined\n" +"You can mark your own functions as `unsafe` if they require particular conditions to avoid undefined\n" "behaviour." -msgstr "" -"์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค๋ฉด, `unsafe`๋กœ ๋งˆํ‚นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์–ด๋–ค ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค๋ฉด, `unsafe`๋กœ ๋งˆํ‚นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/unsafe/writing-unsafe-functions.md:6 msgid "" @@ -10832,10 +10238,7 @@ msgstr "์ฐธ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค msgid "" "Note that unsafe code is allowed within an unsafe function without an `unsafe` block. We can\n" "prohibit this with `#[deny(unsafe_op_in_unsafe_fn)]`. Try adding it and see what happens." -msgstr "" -"unsafe ์ฝ”๋“œ๊ฐ€ unsafe ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋  ๊ฒฝ์šฐ์—๋Š” `unsafe`๋ธ”๋Ÿญ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. " -"`unsafe`๋ธ”๋Ÿญ์„ ํ•ญ์ƒ ์ง€์ •ํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `#[deny(unsafe_op_in_unsafe_fn)]`๋ฅผ ์ด์šฉํ•˜์„ธ์š”. ์ด ์–ดํŠธ" -"๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ณ  ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”." +msgstr "unsafe ์ฝ”๋“œ๊ฐ€ unsafe ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋  ๊ฒฝ์šฐ์—๋Š” `unsafe`๋ธ”๋Ÿญ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. `unsafe`๋ธ”๋Ÿญ์„ ํ•ญ์ƒ ์ง€์ •ํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `#[deny(unsafe_op_in_unsafe_fn)]`๋ฅผ ์ด์šฉํ•˜์„ธ์š”. ์ด ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด๊ณ  ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”." #: src/unsafe/extern-functions.md:1 msgid "# Calling External Code" @@ -10845,9 +10248,7 @@ msgstr "# ์™ธ๋ถ€ ์ฝ”๋“œ ํ˜ธ์ถœ" msgid "" "Functions from other languages might violate the guarantees of Rust. Calling\n" "them is thus unsafe:" -msgstr "" -"๋‹ค๋ฅธ ์–ธ์–ด์˜ ํ•จ์ˆ˜๋Š” ๋Ÿฌ์ŠคํŠธ์˜ ๋ณด์ฆ์„ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ '์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ" -"๋‹ค':" +msgstr "๋‹ค๋ฅธ ์–ธ์–ด์˜ ํ•จ์ˆ˜๋Š” ๋Ÿฌ์ŠคํŠธ์˜ ๋ณด์ฆ์„ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์€ '์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค':" #: src/unsafe/extern-functions.md:6 msgid "" @@ -10871,21 +10272,15 @@ msgstr "" #: src/unsafe/extern-functions.md:21 msgid "" "This is usually only a problem for extern functions which do things with pointers which might\n" -"violate Rust's memory model, but in general any C function might have undefined behaviour under " -"any\n" +"violate Rust's memory model, but in general any C function might have undefined behaviour under any\n" "arbitrary circumstances." -msgstr "" -"์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ์™ธ๋ถ€ ํ•จ์ˆ˜๊ฐ€ ๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์„ ์œ„๋ฐ˜ํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ " -"์–ด๋–ค Cํ•จ์ˆ˜๋ผ๋„ ์–ด๋–ค ์ž„์˜์˜ ์ƒํ™ฉ์—์„œ๋Š” ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—„๋ฐ€ํžˆ ๋งํ•ด์„œ๋Š” ๋ชจ๋“  " -"์™ธ๋ถ€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค." +msgstr "์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ์™ธ๋ถ€ ํ•จ์ˆ˜๊ฐ€ ๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ์„ ์œ„๋ฐ˜ํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค Cํ•จ์ˆ˜๋ผ๋„ ์–ด๋–ค ์ž„์˜์˜ ์ƒํ™ฉ์—์„œ๋Š” ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์—„๋ฐ€ํžˆ ๋งํ•ด์„œ๋Š” ๋ชจ๋“  ์™ธ๋ถ€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค." #: src/unsafe/extern-functions.md:25 msgid "" "The `\"C\"` in this example is the ABI;\n" "[other ABIs are available too](https://doc.rust-lang.org/reference/items/external-blocks.html)." -msgstr "" -"์œ„ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ `\"C\"`๋Š” ABI๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. [๋‹ค๋ฅธ ABI๋„ ์žˆ์Šต๋‹ˆ๋‹ค.](https://doc.rust-lang.org/" -"reference/items/external-blocks.html)" +msgstr "์œ„ ์˜ˆ์ œ ์ฝ”๋“œ์—์„œ `\"C\"`๋Š” ABI๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. [๋‹ค๋ฅธ ABI๋„ ์žˆ์Šต๋‹ˆ๋‹ค.](https://doc.rust-lang.org/reference/items/external-blocks.html)" #: src/unsafe/unsafe-traits.md:1 msgid "# Implementing Unsafe Traits" @@ -10895,17 +10290,13 @@ msgstr "# ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ ๊ตฌํ˜„ํ•˜๊ธฐ" msgid "" "Like with functions, you can mark a trait as `unsafe` if the implementation must guarantee\n" "particular conditions to avoid undefined behaviour." -msgstr "" -"ํ•จ์ˆ˜์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠธ๋ ˆ์ดํŠธ๋„ `unsafe`๋กœ ๋งˆํ‚น ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ •์˜๋˜์ง€ " -"์•Š์€ ๋™์ž‘์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ง์ด์ง€์š”." +msgstr "ํ•จ์ˆ˜์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํŠธ๋ ˆ์ดํŠธ๋„ `unsafe`๋กœ ๋งˆํ‚น ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ •์˜๋˜์ง€ ์•Š์€ ๋™์ž‘์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ง์ด์ง€์š”." #: src/unsafe/unsafe-traits.md:6 msgid "" "For example, the `zerocopy` crate has an unsafe trait that looks\n" "[something like this](https://docs.rs/zerocopy/latest/zerocopy/trait.AsBytes.html):" -msgstr "" -"์˜ˆ๋ฅผ ๋“ค์–ด `zerocopy` ํฌ๋ ˆ์ดํŠธ์—๋Š” [์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ](https://docs.rs/zerocopy/latest/" -"zerocopy/trait.AsBytes.html)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "์˜ˆ๋ฅผ ๋“ค์–ด `zerocopy` ํฌ๋ ˆ์ดํŠธ์—๋Š” [์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ](https://docs.rs/zerocopy/latest/zerocopy/trait.AsBytes.html)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/unsafe/unsafe-traits.md:9 msgid "" @@ -10939,9 +10330,7 @@ msgstr "" msgid "" "There should be a `# Safety` section on the Rustdoc for the trait explaining the requirements for\n" "the trait to be safely implemented." -msgstr "" -"์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋Š” ์ฃผ์„์— `# Safety` ํ•ญ๋ชฉ์ด ์žˆ์–ด์„œ ์ด ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜" -"๋ ค๋ฉด ์–ด๋–ค ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." +msgstr "์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋Š” ์ฃผ์„์— `# Safety` ํ•ญ๋ชฉ์ด ์žˆ์–ด์„œ ์ด ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ์–ด๋–ค ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." #: src/unsafe/unsafe-traits.md:33 msgid "The actual safety section for `AsBytes` is rather longer and more complicated." @@ -10976,9 +10365,7 @@ msgid "" "Rust has great support for calling functions through a _foreign function\n" "interface_ (FFI). We will use this to build a safe wrapper for the `libc`\n" "functions you would use from C to read the filenames of a directory." -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” _์™ธ๋ถ€ ๊ธฐ๋Šฅ ํ˜ธ์ถœ(FFI)_์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ ์ด๋ฆ„์„ ์ฝ์–ด์˜ค" -"๋Š” `libc` ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์•ˆ์ „ํ•œ ๋ž˜ํผ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” _์™ธ๋ถ€ ๊ธฐ๋Šฅ ํ˜ธ์ถœ(FFI)_์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ํŒŒ์ผ ์ด๋ฆ„์„ ์ฝ์–ด์˜ค๋Š” `libc` ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์•ˆ์ „ํ•œ ๋ž˜ํผ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-3/safe-ffi-wrapper.md:7 msgid "You will want to consult the manual pages:" @@ -10999,10 +10386,7 @@ msgid "" "You will also want to browse the [`std::ffi`] module, particular for [`CStr`]\n" "and [`CString`] types which are used to hold NUL-terminated strings coming from\n" "C. The [Nomicon] also has a very useful chapter about FFI." -msgstr "" -"[`std::ffi`] ๋ชจ๋“ˆ์„ ํƒ์ƒ‰ํ•˜๋Š”๊ฒŒ ํ•„์š”ํ•  ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. C์—์„œ ์‚ฌ์šฉ๋˜๋Š” NUL-terminated ๋ฌธ์ž์—ด์„ ๋‹ด" -"๊ธฐ ์œ„ํ•œ [`CStr`]๊ณผ [`CString`] ํƒ€์ž…์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”. [Nomicon]๋ฌธ์„œ ๋˜ํ•œ FFI์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ๋‚ด์šฉ์„ ๋‹ด" -"๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "[`std::ffi`] ๋ชจ๋“ˆ์„ ํƒ์ƒ‰ํ•˜๋Š”๊ฒŒ ํ•„์š”ํ•  ์ง€๋„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. C์—์„œ ์‚ฌ์šฉ๋˜๋Š” NUL-terminated ๋ฌธ์ž์—ด์„ ๋‹ด๊ธฐ ์œ„ํ•œ [`CStr`]๊ณผ [`CString`] ํƒ€์ž…์„ ํ™•์ธํ•ด ๋ณด์„ธ์š”. [Nomicon]๋ฌธ์„œ ๋˜ํ•œ FFI์— ๋Œ€ํ•œ ์œ ์šฉํ•œ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-3/safe-ffi-wrapper.md:17 msgid "" @@ -11028,7 +10412,8 @@ msgid "" " use std::os::raw::{c_char, c_int, c_long, c_ulong, c_ushort};" msgstr "" -#: src/exercises/day-3/safe-ffi-wrapper.md:32 src/exercises/day-3/solutions-afternoon.md:26 +#: src/exercises/day-3/safe-ffi-wrapper.md:32 +#: src/exercises/day-3/solutions-afternoon.md:26 msgid "" " // Opaque type. See https://doc.rust-lang.org/nomicon/ffi.html.\n" " #[repr(C)]\n" @@ -11038,7 +10423,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-3/safe-ffi-wrapper.md:39 src/exercises/day-3/solutions-afternoon.md:33 +#: src/exercises/day-3/safe-ffi-wrapper.md:39 +#: src/exercises/day-3/solutions-afternoon.md:33 msgid "" " // Layout as per readdir(3) and definitions in /usr/include/x86_64-linux-gnu.\n" " #[repr(C)]\n" @@ -11051,7 +10437,8 @@ msgid "" " }" msgstr "" -#: src/exercises/day-3/safe-ffi-wrapper.md:49 src/exercises/day-3/solutions-afternoon.md:43 +#: src/exercises/day-3/safe-ffi-wrapper.md:49 +#: src/exercises/day-3/solutions-afternoon.md:43 msgid "" " extern \"C\" {\n" " pub fn opendir(s: *const c_char) -> *mut DIR;\n" @@ -11061,7 +10448,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-3/safe-ffi-wrapper.md:56 src/exercises/day-3/solutions-afternoon.md:50 +#: src/exercises/day-3/safe-ffi-wrapper.md:56 +#: src/exercises/day-3/solutions-afternoon.md:50 msgid "" "use std::ffi::{CStr, CString, OsStr, OsString};\n" "use std::os::unix::ffi::OsStrExt;" @@ -11134,9 +10522,7 @@ msgstr "* ๋™์‹œ์„ฑ: ์“ฐ๋ ˆ๋“œ, ์ฑ„๋„, ์ƒํƒœ ๊ณต์œ , `Send`์™€ `Sync`" msgid "" "* Android: building binaries and libraries, using AIDL, logging, and\n" " interoperability with C, C++, and Java." -msgstr "" -"* ์•ˆ๋“œ๋กœ์ด๋“œ: ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•, AIDL ์‚ฌ์šฉ๋ฒ•, ๋กœ๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•, C/C++, ์ž๋ฐ”์™€์˜ ์ƒํ˜ธ " -"์šด์šฉ์„ฑ" +msgstr "* ์•ˆ๋“œ๋กœ์ด๋“œ: ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•, AIDL ์‚ฌ์šฉ๋ฒ•, ๋กœ๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•, C/C++, ์ž๋ฐ”์™€์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ" #: src/welcome-day-4.md:10 msgid "" @@ -11157,18 +10543,14 @@ msgstr "# ๊ฒ‚์—†๋Š” ๋™์‹œ์„ฑ" msgid "" "Rust has full support for concurrency using OS threads with mutexes and\n" "channels." -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” ๋™์‹œ์„ฑ ์ง€์›์ด ๋ง‰๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ๋ ˆ๋ฒจ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฎคํƒ์Šค์™€ ์ฑ„๋„๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ๋™์‹œ์„ฑ ์ง€์›์ด ๋ง‰๊ฐ•ํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ ๋ ˆ๋ฒจ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋ฎคํƒ์Šค์™€ ์ฑ„๋„๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค." #: src/concurrency.md:6 msgid "" "The Rust type system plays an important role in making many concurrency bugs\n" "compile time bugs. This is often referred to as _fearless concurrency_ since you\n" "can rely on the compiler to ensure correctness at runtime." -msgstr "" -"๋Ÿฌ์ŠคํŠธ์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์€ ํ”„๋กœ๊ทธ๋žจ์— ๋™์‹œ์„ฑ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ์ปดํŒŒ์ผ ์‹œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ํ•ด ์ค๋‹ˆ" -"๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰์‹œ์— ์ •ํ™•ํžˆ ๋™์ž‘ํ•จ์„ ๋ฏธ๋ฆฌ ๋ณด์žฅํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฅผ " -"์ข…์ข… _๊ฒ์—†๋Š” ๋™์‹œ์„ฑ_ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์€ ํ”„๋กœ๊ทธ๋žจ์— ๋™์‹œ์„ฑ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ์ปดํŒŒ์ผ ์‹œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ํ•ด ์ค๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰์‹œ์— ์ •ํ™•ํžˆ ๋™์ž‘ํ•จ์„ ๋ฏธ๋ฆฌ ๋ณด์žฅํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฅผ ์ข…์ข… _๊ฒ์—†๋Š” ๋™์‹œ์„ฑ_ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค." #: src/concurrency/threads.md:1 msgid "# Threads" @@ -11220,16 +10602,13 @@ msgstr "" msgid "" "* Notice that the thread is stopped before it reaches 10 โ€” the main thread is\n" " not waiting." -msgstr "" -"* ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์Šค๋ ˆ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์Šค๋ ˆ๋“œ์˜ for๋ฌธ์€ 10๊นŒ์ง€ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค." +msgstr "* ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์Šค๋ ˆ๋“œ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์Šค๋ ˆ๋“œ์˜ for๋ฌธ์€ 10๊นŒ์ง€ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/concurrency/threads.md:35 msgid "" "* Use `let handle = thread::spawn(...)` and later `handle.join()` to wait for\n" " the thread to finish." -msgstr "" -"* ๋งŒ์•ฝ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์Šค๋ ˆ๋“œ๊ฐ€ ๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด `let handle = thread::" -"spawn(...)`์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ์–ธํ•œ ํ›„ `handle.join()`๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." +msgstr "* ๋งŒ์•ฝ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์‹ ์Šค๋ ˆ๋“œ๊ฐ€ ๋๋‚  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด `let handle = thread::spawn(...)`์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ์–ธํ•œ ํ›„ `handle.join()`๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/concurrency/threads.md:38 msgid "* Trigger a panic in the thread, notice how this doesn't affect `main`." @@ -11239,9 +10618,7 @@ msgstr "* ์ž์‹ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐœ์ƒํ•œ ํŒจ๋‹‰์ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—๋Š” ์˜ msgid "" "* Use the `Result` return value from `handle.join()` to get access to the panic\n" " payload. This is a good time to talk about [`Any`]." -msgstr "" -"* `handle.join()`์‚ฌ์šฉ์‹œ `Result` ๋ฐ˜ํ™˜๊ฐ’์„ ํ†ตํ•ด ํŒจ๋‹‰์˜ ์ถ”๊ฐ€์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ " -"[`Any`]์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ํ•ด ๋ณด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค." +msgstr "* `handle.join()`์‚ฌ์šฉ์‹œ `Result` ๋ฐ˜ํ™˜๊ฐ’์„ ํ†ตํ•ด ํŒจ๋‹‰์˜ ์ถ”๊ฐ€์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ [`Any`]์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ๋ฅผ ํ•ด ๋ณด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค." #: src/concurrency/threads.md:43 msgid "[`Any`]: https://doc.rust-lang.org/std/any/index.html" @@ -11305,19 +10682,15 @@ msgstr "" msgid "" "
\n" " \n" -"* The reason for that is that when the `thread::scope` function completes, all the threads are " -"guaranteed to be joined, so they can return borrowed data.\n" -"* Normal Rust borrowing rules apply: you can either borrow mutably by one thread, or immutably by " -"any number of threads.\n" +"* The reason for that is that when the `thread::scope` function completes, all the threads are guaranteed to be joined, so they can return borrowed data.\n" +"* Normal Rust borrowing rules apply: you can either borrow mutably by one thread, or immutably by any number of threads.\n" " \n" "
" msgstr "" "
\n" " \n" -"* `thread::scope` ํ•จ์ˆ˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ์•ˆ์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋“ค์ด ์ข…๋ฃŒํ–ˆ์Œ์ด ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ " -"๋•Œ ๋นŒ๋ ธ๋˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" -"* ์ผ๋ฐ˜์ ์ธ ๋Ÿฌ์ŠคํŠธ์˜ ๋นŒ๋ฆผ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค: ํ•œ ์Šค๋ ˆ๋“œ์— ์˜ํ•œ ๊ฐ€๋ณ€ ๋นŒ๋ฆผ ๋˜๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถˆ" -"๋ณ€ ๋นŒ๋ฆผ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" +"* `thread::scope` ํ•จ์ˆ˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ์•ˆ์—์„œ ์ƒ์„ฑ๋œ ๋ชจ๋“  ์Šค๋ ˆ๋“œ๋“ค์ด ์ข…๋ฃŒํ–ˆ์Œ์ด ๋ณด์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ ๋•Œ ๋นŒ๋ ธ๋˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +"* ์ผ๋ฐ˜์ ์ธ ๋Ÿฌ์ŠคํŠธ์˜ ๋นŒ๋ฆผ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค: ํ•œ ์Šค๋ ˆ๋“œ์— ์˜ํ•œ ๊ฐ€๋ณ€ ๋นŒ๋ฆผ ๋˜๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถˆ๋ณ€ ๋นŒ๋ฆผ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" " \n" "
" @@ -11331,8 +10704,7 @@ msgid "" "are connected via the channel, but you only see the end-points." msgstr "" "๋Ÿฌ์ŠคํŠธ์˜ ์ฑ„๋„์€ `Sender` ์™€ `Receiver` ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.\n" -"์ด ๋‘˜์€ ์ฑ„๋„์„ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ฑ„๋„์„ ๋ณผ ์ˆ˜๋Š” ์—†๊ณ  ์ด ์–‘ ๋๋‹จ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ" -"๋‹ค." +"์ด ๋‘˜์€ ์ฑ„๋„์„ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ์ฑ„๋„์„ ๋ณผ ์ˆ˜๋Š” ์—†๊ณ  ์ด ์–‘ ๋๋‹จ๋งŒ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค." #: src/concurrency/channels.md:6 msgid "" @@ -11370,18 +10742,14 @@ msgstr "" #: src/concurrency/channels.md:27 msgid "" -"* `mpsc` stands for Multi-Producer, Single-Consumer. `Sender` and `SyncSender` implement `Clone` " -"(so\n" +"* `mpsc` stands for Multi-Producer, Single-Consumer. `Sender` and `SyncSender` implement `Clone` (so\n" " you can make multiple producers) but `Receiver` does not.\n" -"* `send()` and `recv()` return `Result`. If they return `Err`, it means the counterpart `Sender` " -"or\n" +"* `send()` and `recv()` return `Result`. If they return `Err`, it means the counterpart `Sender` or\n" " `Receiver` is dropped and the channel is closed." msgstr "" -"* `mpsc`๋Š” โ€œMulti-Produce, Single-Consumerโ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. `Sender`์™€ `SyncSender`๋Š” `Clone`์„ ๊ตฌํ˜„" -"ํ•˜์ง€๋งŒ (์ฆ‰, ์—ฌ๋Ÿฌ๊ฐœ์˜ producer๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)\n" +"* `mpsc`๋Š” โ€œMulti-Produce, Single-Consumerโ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. `Sender`์™€ `SyncSender`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•˜์ง€๋งŒ (์ฆ‰, ์—ฌ๋Ÿฌ๊ฐœ์˜ producer๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)\n" " `Receiver`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" -"* `send()`์™€ `recv()`๋Š” `Result`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ `Err`๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค๋ฉด, ์ƒ๋Œ€๋ฐฉ์˜ `Sender`๋˜๋Š” " -"`Receiver`๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๊ณ  ์ฑ„๋„์ด ๋‹ซํ˜”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค." +"* `send()`์™€ `recv()`๋Š” `Result`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ `Err`๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค๋ฉด, ์ƒ๋Œ€๋ฐฉ์˜ `Sender`๋˜๋Š” `Receiver`๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๊ณ  ์ฑ„๋„์ด ๋‹ซํ˜”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค." #: src/concurrency/channels/unbounded.md:1 msgid "# Unbounded Channels" @@ -11391,7 +10759,8 @@ msgstr "# ๋ฌด๊ฒฝ๊ณ„ ์ฑ„๋„(Unbounded Channels)" msgid "You get an unbounded and asynchronous channel with `mpsc::channel()`:" msgstr "`mpsc::channel()` ํ•จ์ˆ˜๋Š” ๊ฒฝ๊ณ„๊ฐ€ ์—†๋Š” ๋น„๋™๊ธฐ ์ฑ„๋„์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค: " -#: src/concurrency/channels/unbounded.md:5 src/concurrency/channels/bounded.md:5 +#: src/concurrency/channels/unbounded.md:5 +#: src/concurrency/channels/bounded.md:5 msgid "" "```rust,editable\n" "use std::sync::mpsc;\n" @@ -11399,7 +10768,8 @@ msgid "" "use std::time::Duration;" msgstr "" -#: src/concurrency/channels/unbounded.md:13 src/concurrency/channels/bounded.md:13 +#: src/concurrency/channels/unbounded.md:13 +#: src/concurrency/channels/bounded.md:13 msgid "" " thread::spawn(move || {\n" " let thread_id = thread::current().id();\n" @@ -11460,8 +10830,7 @@ msgid "" " takes care to deallocate `T` when the last reference is dropped,\n" "* [`Mutex`][2]: ensures mutually exclusive access to the `T` value." msgstr "" -"* [`Arc`][1], `T`์— ๋Œ€ํ•œ ์•„ํ† ๋ฏน ์ฐธ์กฐ ์นด์šดํŠธ: ์ด ์ฐธ์กฐ๋Š” ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ ์‚ฌ์ด์—์„œ ๊ณต์œ ๋  ์ˆ˜ ์žˆ๊ณ , ์ฐธ" -"์กฐํ•˜๋˜ ๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๊ฒฝ์šฐ `T`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" +"* [`Arc`][1], `T`์— ๋Œ€ํ•œ ์•„ํ† ๋ฏน ์ฐธ์กฐ ์นด์šดํŠธ: ์ด ์ฐธ์กฐ๋Š” ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ ์‚ฌ์ด์—์„œ ๊ณต์œ ๋  ์ˆ˜ ์žˆ๊ณ , ์ฐธ์กฐํ•˜๋˜ ๋งˆ์ง€๋ง‰ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒํ•  ๊ฒฝ์šฐ `T`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" "* [`Mutex`][2]: `T`๊ฐ’์— ๋Œ€ํ•œ ์ƒํ˜ธ ๋ฐฐ์ œ ์—‘์„ธ์Šค๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค." #: src/concurrency/shared_state.md:10 @@ -11478,9 +10847,7 @@ msgstr "# `Arc`" #: src/concurrency/shared_state/arc.md:3 msgid "[`Arc`][1] allows shared read-only access via its `clone` method:" -msgstr "" -"[`Arc`][1]์˜ `clone` ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— (_์—ญ์ฃผ_: ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ „ํ•˜" -"๊ฒŒ. ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ์—๋Š” `T`๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Œ) ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "[`Arc`][1]์˜ `clone` ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— (_์—ญ์ฃผ_: ๊ทธ๋ฆฌ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ. ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์‚ด์•„์žˆ๋Š” ๋™์•ˆ์—๋Š” `T`๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Œ) ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/concurrency/shared_state/arc.md:5 msgid "" @@ -11521,20 +10888,15 @@ msgid "" " operations.\n" "* `Arc` implements `Clone` whether or not `T` does. It implements `Send` and `Sync` iff `T`\n" " implements them both.\n" -"* `Arc::clone()` has the cost of atomic operations that get executed, but after that the use of " -"the\n" +"* `Arc::clone()` has the cost of atomic operations that get executed, but after that the use of the\n" " `T` is free.\n" "* Beware of reference cycles, `Arc` does not use a garbage collector to detect them.\n" " * `std::sync::Weak` can help." msgstr "" -"* `Arc`๋Š” \"Atomic Reference Counted\"๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” `Rc`๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ" -"๋‹ค.\n" -"* `T`๊ฐ€ `Clone`์„ ๊ตฌํ˜„ํ•˜๋“  ์•ˆํ•˜๋“  `Arc`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. `Send`์™€ `Sync`๋Š” `T`๊ฐ€ ์ด๋“ค์„ " -"๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.\n" -"* `Arc::clone()`๋Š” ์•„ํ† ๋ฏน ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋•Œ ์ฝ”์ŠคํŠธ๊ฐ€ ์ข€ ์žˆ์ง€๋งŒ, ์ผ๋‹จ `clone()`์ด ๋๋‚œ " -"ํ›„ `T`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.\n" -"* ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ž™ํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ" -"๋‹ค.\n" +"* `Arc`๋Š” \"Atomic Reference Counted\"๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” `Rc`๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.\n" +"* `T`๊ฐ€ `Clone`์„ ๊ตฌํ˜„ํ•˜๋“  ์•ˆํ•˜๋“  `Arc`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. `Send`์™€ `Sync`๋Š” `T`๊ฐ€ ์ด๋“ค์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.\n" +"* `Arc::clone()`๋Š” ์•„ํ† ๋ฏน ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋•Œ ์ฝ”์ŠคํŠธ๊ฐ€ ์ข€ ์žˆ์ง€๋งŒ, ์ผ๋‹จ `clone()`์ด ๋๋‚œ ํ›„ `T`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.\n" +"* ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ž™ํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.\n" " * ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ํ”ผํ•˜๋Š”๋ฐ `std::sync::Weak`๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/concurrency/shared_state/mutex.md:1 @@ -11545,9 +10907,7 @@ msgstr "# `Mutex`" msgid "" "[`Mutex`][1] ensures mutual exclusion _and_ allows mutable access to `T`\n" "behind a read-only interface:" -msgstr "" -"[`Mutex`][1]๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ถˆ๋ณ€ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด์„œ๋„ `T`์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, _์ด์— ๋”ํ•ด์„œ_ ํ•œ ๋ฒˆ" -"์— ํ•œ ์Šค๋ ˆ๋“œ๋งŒ `T`์˜ ๊ฐ’์„ ์ ‘๊ทผ(์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ฑฐ๋‚˜)ํ•จ์„ ๋ณด์žฅํ•ด ์ค๋‹ˆ๋‹ค:" +msgstr "[`Mutex`][1]๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ถˆ๋ณ€ ์ฐธ์กฐ๋ฅผ ํ†ตํ•ด์„œ๋„ `T`์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉฐ, _์ด์— ๋”ํ•ด์„œ_ ํ•œ ๋ฒˆ์— ํ•œ ์Šค๋ ˆ๋“œ๋งŒ `T`์˜ ๊ฐ’์„ ์ ‘๊ทผ(์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ฑฐ๋‚˜)ํ•จ์„ ๋ณด์žฅํ•ด ์ค๋‹ˆ๋‹ค:" #: src/concurrency/shared_state/mutex.md:6 msgid "" @@ -11600,34 +10960,26 @@ msgid "" " \n" "* `Mutex` in Rust looks like a collection with just one element - the protected data.\n" " * It is not possible to forget to acquire the mutex before accessing the protected data.\n" -"* You can get an `&mut T` from an `&Mutex` by taking the lock. The `MutexGuard` ensures that " -"the\n" +"* You can get an `&mut T` from an `&Mutex` by taking the lock. The `MutexGuard` ensures that the\n" " `&mut T` doesn't outlive the lock being held.\n" "* `Mutex` implements both `Send` and `Sync` iff `T` implements `Send`.\n" "* A read-write lock counterpart - `RwLock`.\n" "* Why does `lock()` return a `Result`? \n" -" * If the thread that held the `Mutex` panicked, the `Mutex` becomes \"poisoned\" to signal " -"that\n" -" the data it protected might be in an inconsistent state. Calling `lock()` on a poisoned " -"mutex\n" +" * If the thread that held the `Mutex` panicked, the `Mutex` becomes \"poisoned\" to signal that\n" +" the data it protected might be in an inconsistent state. Calling `lock()` on a poisoned mutex\n" " fails with a [`PoisonError`]. You can call `into_inner()` on the error to recover the data\n" " regardless." msgstr "" "
\n" " \n" -"* ๋Ÿฌ์ŠคํŠธ์˜ `Mutex`๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์ฒ˜๋Ÿผ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜๊ณผ " -"๋‹ค๋ฅธ ์ ์€, ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กญ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.\n" -" * `Mutex`๋Š” ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋””์ž์ธ ๋˜์–ด ์žˆ" -"์Šต๋‹ˆ๋‹ค.\n" -"* `&Mutex`์— ๋Œ€ํ•ด lock์„ ํš๋“ํ•˜๋ฉด `&mut T`๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `MutexGuard`๋Š” `&mut T`๊ฐ€ ํš๋“ํ•œ " -"lock๋ณด๋‹ค ์˜ค๋ž˜ ์‚ด์•„๋‚จ์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋Ÿฌ์ŠคํŠธ์˜ `Mutex`๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์ฒ˜๋Ÿผ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜๊ณผ ๋‹ค๋ฅธ ์ ์€, ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กญ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.\n" +" * `Mutex`๋Š” ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋””์ž์ธ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* `&Mutex`์— ๋Œ€ํ•ด lock์„ ํš๋“ํ•˜๋ฉด `&mut T`๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. `MutexGuard`๋Š” `&mut T`๊ฐ€ ํš๋“ํ•œ lock๋ณด๋‹ค ์˜ค๋ž˜ ์‚ด์•„๋‚จ์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.\n" "* `Mutex`๋Š” ์˜ค์ง `T`๊ฐ€ `Send`๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ `Send`์™€ `Sync`๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.\n" "* ์ฝ๊ธฐ-์“ฐ๊ธฐ lock์€ `RwLock`์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.\n" "* ์™œ `lock()`์ด `Result`๋ฅผ ๋ฐ˜ํ™˜ํ• ๊นŒ์š”?\n" -" * `Mutex`๋ฅผ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ƒํ™ฉ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด" -"๋ฅผ `Mutex`๊ฐ€ \"์ค‘๋…(poisoned)\" ๋˜์—ˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋ฉฐ,\n" -" ์ค‘๋…๋œ ๋ฎคํ…์Šค์—์„œ `lock()`์„ ํ˜ธ์ถœํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  [`PoisonError`]๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ๋ถ€ํ„ฐ " -"๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด `into_inner()`๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +" * `Mutex`๋ฅผ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ƒํ™ฉ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ `Mutex`๊ฐ€ \"์ค‘๋…(poisoned)\" ๋˜์—ˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋ฉฐ,\n" +" ์ค‘๋…๋œ ๋ฎคํ…์Šค์—์„œ `lock()`์„ ํ˜ธ์ถœํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  [`PoisonError`]๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด `into_inner()`๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/concurrency/shared_state/mutex.md:43 msgid "" @@ -11730,16 +11082,13 @@ msgstr "" msgid "" "* `v` is wrapped in both `Arc` and `Mutex`, because their concerns are orthogonal.\n" " * Wrapping a `Mutex` in an `Arc` is a common pattern to share mutable state between threads.\n" -"* `v: Arc<_>` needs to be cloned as `v2` before it can be moved into another thread. Note `move` " -"was added to the lambda signature.\n" +"* `v: Arc<_>` needs to be cloned as `v2` before it can be moved into another thread. Note `move` was added to the lambda signature.\n" "* Blocks are introduced to narrow the scope of the `LockGuard` as much as possible.\n" "* We still need to acquire the `Mutex` to print our `Vec`." msgstr "" -"* `v`๋Š” `Arc`์™€ `Mutex` ๋ชจ๋‘์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” `Arc`์™€ `Mutex`๊ฐ€ ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์œ„" -"ํ•œ ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +"* `v`๋Š” `Arc`์™€ `Mutex` ๋ชจ๋‘์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” `Arc`์™€ `Mutex`๊ฐ€ ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์œ„ํ•œ ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" " * `Mutex`๋ฅผ `Arc`๋กœ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋ณ€ ์ƒํƒœ๋ฅผ ์Šค๋ ˆ๋“œ๋“ค ๊ฐ„์— ๊ณต์œ ํ•  ๋•Œ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.\n" -"* `v: Arc<_>`๋ฅผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋จผ์ € `v2`๋กœ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ณ  ์ด๋ฅผ ๊ทธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ ํ•ด์•ผ ํ•ฉ๋‹ˆ" -"๋‹ค. ๊ทธ๋ž˜์„œ ๋žŒ๋‹ค์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— `move`๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" +"* `v: Arc<_>`๋ฅผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋จผ์ € `v2`๋กœ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ณ  ์ด๋ฅผ ๊ทธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋žŒ๋‹ค์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— `move`๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" "* ๋ธ”๋ก์€ `LockGuard`์˜ ๋ฒ”์œ„๋ฅผ ์ตœ๋Œ€ํ•œ ์ขํžˆ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n" "* `Vec`์„ ๋‹จ์ˆœํžˆ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋„ ์—ฌ์ „ํžˆ `Mutex`๋ฅผ ํš๋“ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค." @@ -11749,9 +11098,7 @@ msgstr "# `Send`์™€ `Sync`" #: src/concurrency/send-sync.md:3 msgid "How does Rust know to forbid shared access across thread? The answer is in two traits:" -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์Šค๋ ˆ๋“œ ๊ฐ„์— ํŠน์ • ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ณต์œ ๋  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊นŒ์š”? ์ •๋‹ต์€ " -"๋‹ค์Œ ๋‘ ํŠธ๋ ˆ์ดํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์„œ ์Šค๋ ˆ๋“œ ๊ฐ„์— ํŠน์ • ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๊ณต์œ ๋  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊นŒ์š”? ์ •๋‹ต์€ ๋‹ค์Œ ๋‘ ํŠธ๋ ˆ์ดํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/concurrency/send-sync.md:5 msgid "" @@ -11765,16 +11112,12 @@ msgstr "" #: src/concurrency/send-sync.md:10 msgid "" -"`Send` and `Sync` are [unsafe traits][3]. The compiler will automatically derive them for your " -"types\n" -"as long as they only contain `Send` and `Sync` types. You can also implement them manually when " -"you\n" +"`Send` and `Sync` are [unsafe traits][3]. The compiler will automatically derive them for your types\n" +"as long as they only contain `Send` and `Sync` types. You can also implement them manually when you\n" "know it is valid." msgstr "" -"`Send`์™€ `Sync` ํŠธ๋ ˆ์ดํŠธ๋Š” [์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ][3]์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํƒ€์ž…์˜ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ " -"`Send`์™€ `Sync` ํƒ€์ž…์ด๋ฉด\n" -"์ž๋™์œผ๋กœ ์ด ํŠธ๋ ˆ์ดํŠธ๋“ค์„ ์ ์šฉ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์—ฌ๋Ÿฌ๋ถ„ ์Šค์Šค๋กœ ๋งž๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ" -"๋‹ค." +"`Send`์™€ `Sync` ํŠธ๋ ˆ์ดํŠธ๋Š” [์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ][3]์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํƒ€์ž…์˜ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ `Send`์™€ `Sync` ํƒ€์ž…์ด๋ฉด\n" +"์ž๋™์œผ๋กœ ์ด ํŠธ๋ ˆ์ดํŠธ๋“ค์„ ์ ์šฉ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์—ฌ๋Ÿฌ๋ถ„ ์Šค์Šค๋กœ ๋งž๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค." #: src/concurrency/send-sync.md:14 msgid "" @@ -11793,8 +11136,7 @@ msgid "" " \n" "
" msgstr "" -"* `Sync`์™€ `Send`๋Š” ์–ด๋–ค ํƒ€์ž…์ด ํŠน์ •ํ•œ ์Šค๋ ˆ๋“œ-์•ˆ์ „ ์†์„ฑ์„ ๊ฐ€์ง์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋งˆ์ปค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ" -"๋‹ค.\n" +"* `Sync`์™€ `Send`๋Š” ์–ด๋–ค ํƒ€์ž…์ด ํŠน์ •ํ•œ ์Šค๋ ˆ๋“œ-์•ˆ์ „ ์†์„ฑ์„ ๊ฐ€์ง์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋งˆ์ปค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์ด ๋‘ ํŠธ๋ ˆ์ดํŠธ๋Š” ์ œ๋„ˆ๋ฆญ์—์„œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠธ๋ ˆ์ดํŠธ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "\n" "" @@ -11814,8 +11156,7 @@ msgid "" "and deallocate it in another." msgstr "" "์†Œ์œ ๊ถŒ์„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ํ•˜๋ฉด ์†Œ๋ฉธ์ž๊ฐ€ ํ•ด๋‹น ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. \n" -"์—ฌ๊ธฐ์„œ ์˜๋ฌธ์€ \"์–ธ์ œ ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ’์„ ํ• ๋‹น ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€\" ์ž…๋‹ˆ" -"๋‹ค. " +"์—ฌ๊ธฐ์„œ ์˜๋ฌธ์€ \"์–ธ์ œ ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ’์„ ํ• ๋‹น ํ•ด์ œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€\" ์ž…๋‹ˆ๋‹ค. " #: src/concurrency/send-sync/send.md:9 msgid "[1]: https://doc.rust-lang.org/std/marker/trait.Send.html" @@ -11844,24 +11185,12 @@ msgid "[1]: https://doc.rust-lang.org/std/marker/trait.Sync.html" msgstr "" #: src/concurrency/send-sync/sync.md:14 -msgid "" -"This statement is essentially a shorthand way of saying that if a type is thread-safe for shared " -"use, it is also thread-safe to pass references of it across threads." -msgstr "" -"์œ„ ๋ฌธ์žฅ์„ ํ’€์–ด์„œ ์ด์•ผ๊ธฐ ํ•˜๋ฉด, ์–ด๋–ค ํƒ€์ž…์ด ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋˜์–ด์„œ ์‚ฌ์šฉ๋˜๊ธฐ์— ์•ˆ์ „ํ•˜๋‹ค๋ฉด ๊ทธ ํƒ€์ž…์˜ ์ฐธ" -"์กฐ ํƒ€์ž…์€ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค." +msgid "This statement is essentially a shorthand way of saying that if a type is thread-safe for shared use, it is also thread-safe to pass references of it across threads." +msgstr "์œ„ ๋ฌธ์žฅ์„ ํ’€์–ด์„œ ์ด์•ผ๊ธฐ ํ•˜๋ฉด, ์–ด๋–ค ํƒ€์ž…์ด ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋˜์–ด์„œ ์‚ฌ์šฉ๋˜๊ธฐ์— ์•ˆ์ „ํ•˜๋‹ค๋ฉด ๊ทธ ํƒ€์ž…์˜ ์ฐธ์กฐ ํƒ€์ž…์€ ์Šค๋ ˆ๋“œ ๊ฐ„์— ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/concurrency/send-sync/sync.md:16 -msgid "" -"This is because if a type is Sync it means that it can be shared across multiple threads without " -"the risk of data races or other synchronization issues, so it is safe to move it to another " -"thread. A reference to the type is also safe to move to another thread, because the data it " -"references can be accessed from any thread safely." -msgstr "" -"์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์–ด๋–ค ํƒ€์ž…์ด `Sync`๋ผ๋Š” ๋ง์€ ๊ณง ๊ทธ ํƒ€์ž…์ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋“ค ์‚ฌ์ด์—" -"์„œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค๋‚˜ ์—ฌํƒ€ ๋™๊ธฐํ™” ๋ฌธ์ œ ์—†์ด ๊ณต์œ  ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ๊ฐ„ ๊ณต์œ ๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๋ฉด, ์Šค" -"๋ ˆ๋“œ๊ฐ„ ์ด๋™๋„ ์•ˆ์ „ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํƒ€์ž…์˜ ์Šค๋ ˆ๋“œ๊ฐ„ ์ด๋™์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด, ๊ทธ ํƒ€์ž…์˜ ์ฐธ์กฐ ๋˜ํ•œ " -"์Šค๋ ˆ๋“œ๊ฐ„ ์ด๋™์ด ์•ˆ์ „ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค." +msgid "This is because if a type is Sync it means that it can be shared across multiple threads without the risk of data races or other synchronization issues, so it is safe to move it to another thread. A reference to the type is also safe to move to another thread, because the data it references can be accessed from any thread safely." +msgstr "์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์–ด๋–ค ํƒ€์ž…์ด `Sync`๋ผ๋Š” ๋ง์€ ๊ณง ๊ทธ ํƒ€์ž…์ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋“ค ์‚ฌ์ด์—์„œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์Šค๋‚˜ ์—ฌํƒ€ ๋™๊ธฐํ™” ๋ฌธ์ œ ์—†์ด ๊ณต์œ  ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ๊ฐ„ ๊ณต์œ ๊ฐ€ ์•ˆ์ „ํ•˜๋‹ค๋ฉด, ์Šค๋ ˆ๋“œ๊ฐ„ ์ด๋™๋„ ์•ˆ์ „ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ํƒ€์ž…์˜ ์Šค๋ ˆ๋“œ๊ฐ„ ์ด๋™์ด ์•ˆ์ „ํ•˜๋‹ค๋ฉด, ๊ทธ ํƒ€์ž…์˜ ์ฐธ์กฐ ๋˜ํ•œ ์Šค๋ ˆ๋“œ๊ฐ„ ์ด๋™์ด ์•ˆ์ „ํ•  ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค." #: src/concurrency/send-sync/examples.md:1 msgid "# Examples" @@ -11905,9 +11234,7 @@ msgstr "" msgid "" "These types can be moved to other threads, but they're not thread-safe.\n" "Typically because of interior mutability:" -msgstr "" -"์•„๋ž˜ ํƒ€์ž…๋“ค์€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ์•ˆ์ „ํ•˜์ง€ " -"์•Š์Šต๋‹ˆ๋‹ค." +msgstr "์•„๋ž˜ ํƒ€์ž…๋“ค์€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ์•ˆ์ „ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/concurrency/send-sync/examples.md:22 msgid "" @@ -11929,9 +11256,7 @@ msgstr "์•„๋ž˜ ํƒ€์ž…๋“ค์€ ์Šค๋ ˆ๋“œ ์•ˆ์ „ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ msgid "" "* `MutexGuard`: Uses OS level primitives which must be deallocated on the\n" " thread which created them." -msgstr "" -"* `MutexGuard`: ๋‚ด๋ถ€์ ์œผ๋กœ, ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” primitive๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด primitive๋Š” ์ƒ์„ฑ๋œ ์Šค" -"๋ ˆ๋“œ์—์„œ ํ•ด์ œ๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)" +msgstr "* `MutexGuard`: ๋‚ด๋ถ€์ ์œผ๋กœ, ์šด์˜์ฒด์ œ๊ฐ€ ์ œ๊ณตํ•˜๋Š” primitive๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด primitive๋Š” ์ƒ์„ฑ๋œ ์Šค๋ ˆ๋“œ์—์„œ ํ•ด์ œ๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (_์—ญ์ฃผ_: ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)" #: src/concurrency/send-sync/examples.md:34 msgid "## `!Send + !Sync`" @@ -11967,9 +11292,7 @@ msgstr "* ์‹์‚ฌํ•˜๋Š” ์ฒ ํ•™์ž ๋ฌธ์ œ: ๊ณ ์ ์ ์ธ ๋™์‹œ์„ฑ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. msgid "" "* Multi-threaded link checker: a larger project where you'll use Cargo to\n" " download dependencies and then check links in parallel." -msgstr "" -"* ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋งํฌ ๊ฒ€์‚ฌ๊ธฐ: ๋ณ‘๋ ฌ์ ์œผ๋กœ ์›นํŽ˜์ด์ง€์˜ ๋งํฌ๋“ค์„ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์นด๊ณ ๋ฅผ ํ†ตํ•ด ๋ช‡ ๊ฐ€์ง€ ์˜์กด์„ฑ๋“ค" -"์„ ๋‹ค์šด๋„๋ฅด ๋ฐ›์•„์•ผ ํ•˜๋Š” ํฐ ํ”„๋กœ์ ํŠธ ์ž…๋‹ˆ๋‹ค." +msgstr "* ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋งํฌ ๊ฒ€์‚ฌ๊ธฐ: ๋ณ‘๋ ฌ์ ์œผ๋กœ ์›นํŽ˜์ด์ง€์˜ ๋งํฌ๋“ค์„ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ์นด๊ณ ๋ฅผ ํ†ตํ•ด ๋ช‡ ๊ฐ€์ง€ ์˜์กด์„ฑ๋“ค์„ ๋‹ค์šด๋„๋ฅด ๋ฐ›์•„์•ผ ํ•˜๋Š” ํฐ ํ”„๋กœ์ ํŠธ ์ž…๋‹ˆ๋‹ค." #: src/exercises/day-4/dining-philosophers.md:1 msgid "# Dining Philosophers" @@ -12005,8 +11328,7 @@ msgid "" "and test that `cargo run` does not deadlock:" msgstr "" "์ด๋ฒˆ ํ›ˆ๋ จ์—์„œ๋Š” [์นด๊ณ  ์„ค์น˜ํ•˜๊ธฐ](../../cargo/running-locally.md)๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.\n" -"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ `src/main.rs`์— ๋ถ™์—ฌ๋†“๊ณ  ๋นˆ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๊ณ , `cargo run` ์ปค๋งจ๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•ด์„œ ๊ต" -"์ฐฉ์ƒํƒœ(๋ฐ๋“œ๋ฝ)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:" +"์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ `src/main.rs`์— ๋ถ™์—ฌ๋†“๊ณ  ๋นˆ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๊ณ , `cargo run` ์ปค๋งจ๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•ด์„œ ๊ต์ฐฉ์ƒํƒœ(๋ฐ๋“œ๋ฝ)๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:" #: src/exercises/day-4/dining-philosophers.md:17 msgid "" @@ -12017,7 +11339,8 @@ msgid "" "use std::time::Duration;" msgstr "" -#: src/exercises/day-4/dining-philosophers.md:23 src/exercises/day-4/solutions-morning.md:28 +#: src/exercises/day-4/dining-philosophers.md:23 +#: src/exercises/day-4/solutions-morning.md:28 msgid "struct Fork;" msgstr "" @@ -12051,7 +11374,8 @@ msgid "" "}" msgstr "" -#: src/exercises/day-4/dining-philosophers.md:46 src/exercises/day-4/solutions-morning.md:60 +#: src/exercises/day-4/dining-philosophers.md:46 +#: src/exercises/day-4/solutions-morning.md:60 msgid "" "static PHILOSOPHERS: &[&str] =\n" " &[\"Socrates\", \"Plato\", \"Aristotle\", \"Thales\", \"Pythagoras\"];" @@ -12097,9 +11421,7 @@ msgstr "" msgid "" "For this, you will need an HTTP client such as [`reqwest`][1]. Create a new\n" "Cargo project and `reqwest` it as a dependency with:" -msgstr "" -"์ด๋ฅผ ์œ„ํ•ด์„œ [`reqwest`][1]์™€ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  " -"[`reqwest`][1]๋ฅผ ์˜์กด์„ฑ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์š”" +msgstr "์ด๋ฅผ ์œ„ํ•ด์„œ [`reqwest`][1]์™€ ๊ฐ™์€ HTTP ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  [`reqwest`][1]๋ฅผ ์˜์กด์„ฑ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์š”" #: src/exercises/day-4/link-checker.md:11 msgid "" @@ -12250,10 +11572,8 @@ msgid "" " `www.google.org` domain. Put an upper limit of 100 pages or so so that you\n" " don't end up being blocked by the site." msgstr "" -"* ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค: URL์„ ์ฑ„๋„๋กœ ๋ณด๋‚ด์„œ ๋ช‡ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ URL์„ ๋ณ‘๋ ฌ๋กœ ์ฒด" -"ํฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.\n" -"* `www.google.org`๋„๋ฉ”์ธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•ด์„œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค: ์ฐจ๋‹จ" -"๋‹นํ•˜์ง€ ์•Š๋„๋ก 100ํŽ˜์ด์ง€ ์ •๋„๋กœ ์ œํ•œ์„ ๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +"* ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งํฌ๋ฅผ ๋ณ‘๋ ฌ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค: URL์„ ์ฑ„๋„๋กœ ๋ณด๋‚ด์„œ ๋ช‡ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ URL์„ ๋ณ‘๋ ฌ๋กœ ์ฒดํฌํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.\n" +"* `www.google.org`๋„๋ฉ”์ธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•ด์„œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค: ์ฐจ๋‹จ๋‹นํ•˜์ง€ ์•Š๋„๋ก 100ํŽ˜์ด์ง€ ์ •๋„๋กœ ์ œํ•œ์„ ๋‘์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/day-4/link-checker.md:104 msgid "" @@ -12271,9 +11591,7 @@ msgid "" "Rust is supported for native platform development on Android. This means that\n" "you can write new operating system services in Rust, as well as extending\n" "existing services." -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ OS ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ์„œ๋น„์Šค" -"๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๋Ÿฌ์ŠคํŠธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ”Œ๋žซํผ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ OS ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜, ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๋Ÿฌ์ŠคํŠธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/android/setup.md:1 msgid "# Setup" @@ -12283,9 +11601,7 @@ msgstr "# ์„ค์น˜" msgid "" "We will be using an Android Virtual Device to test our code. Make sure you have\n" "access to one or create a new one with:" -msgstr "" -"์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค(Android Virtual Device)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด " -"๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”." +msgstr "์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค(Android Virtual Device)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฐ€์ƒ ๋””๋ฐ”์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”." #: src/android/setup.md:6 msgid "" @@ -12314,34 +11630,23 @@ msgstr "์•ˆ๋“œ๋กœ์ด๋“œ ๋นŒ๋“œ ์‹œ์Šคํ…œ(Soong)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ชจ #: src/android/build-rules.md:5 msgid "" -"| Module Type | " -"Description " -"|\n" +"| Module Type | Description |\n" "|-------------------|----------------------------------------------------------------------------------------------------|\n" -"| `rust_binary` | Produces a Rust " -"binary. |\n" -"| `rust_library` | Produces a Rust library, and provides both `rlib` and `dylib` " -"variants. |\n" -"| `rust_ffi` | Produces a Rust C library usable by `cc` modules, and provides both static " -"and shared variants. |\n" -"| `rust_proc_macro` | Produces a `proc-macro` Rust library. These are analogous to compiler " -"plugins. |\n" -"| `rust_test` | Produces a Rust test binary that uses the standard Rust test " -"harness. |\n" -"| `rust_fuzz` | Produces a Rust fuzz binary leveraging " -"`libfuzzer`. |\n" -"| `rust_protobuf` | Generates source and produces a Rust library that provides an interface for " -"a particular protobuf. |\n" -"| `rust_bindgen` | Generates source and produces a Rust library containing Rust bindings to C " -"libraries. |" +"| `rust_binary` | Produces a Rust binary. |\n" +"| `rust_library` | Produces a Rust library, and provides both `rlib` and `dylib` variants. |\n" +"| `rust_ffi` | Produces a Rust C library usable by `cc` modules, and provides both static and shared variants. |\n" +"| `rust_proc_macro` | Produces a `proc-macro` Rust library. These are analogous to compiler plugins. |\n" +"| `rust_test` | Produces a Rust test binary that uses the standard Rust test harness. |\n" +"| `rust_fuzz` | Produces a Rust fuzz binary leveraging `libfuzzer`. |\n" +"| `rust_protobuf` | Generates source and produces a Rust library that provides an interface for a particular protobuf. |\n" +"| `rust_bindgen` | Generates source and produces a Rust library containing Rust bindings to C libraries. |" msgstr "" "| Module Type | Description |\n" "|-------------------|------------------------------------------------------|\n" "| `rust_binary` | ๋Ÿฌ์ŠคํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" "| `rust_library` | ๋Ÿฌ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(rlibํ˜น์€ dylib)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" "| `rust_ffi` | cc ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” C library (์ •์  ํ˜น์€ ๋™์ )๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" -"| `rust_proc_macro` | `proc-macro`๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Ÿฌ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ" -"๋กœ ์ƒ๊ฐํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.|\n" +"| `rust_proc_macro` | `proc-macro`๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋Ÿฌ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์ƒ๊ฐํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.|\n" "| `rust_test` | ํ‘œ์ค€ ๋Ÿฌ์ŠคํŠธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" "| `rust_fuzz` | `libfuzzer`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ fuzz ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" "| `rust_protobuf` | ํ”„๋กœํ† ๋ฒ„ํ”„(protobuf) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋Ÿฌ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.|\n" @@ -12522,9 +11827,7 @@ msgstr "# AIDL" msgid "" "The [Android Interface Definition Language\n" "(AIDL)](https://developer.android.com/guide/components/aidl) is supported in Rust:" -msgstr "" -"๋Ÿฌ์ŠคํŠธ๋Š” [์•ˆ๋“œ๋กœ์ด๋“œ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ ์–ธ์–ด(AIDL)](https://developer.android.com/guide/components/" -"aidl)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:" +msgstr "๋Ÿฌ์ŠคํŠธ๋Š” [์•ˆ๋“œ๋กœ์ด๋“œ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ ์–ธ์–ด(AIDL)](https://developer.android.com/guide/components/aidl)๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:" #: src/android/aidl.md:6 msgid "" @@ -12586,8 +11889,7 @@ msgstr "" msgid "" "Add `vendor_available: true` if your AIDL file is used by a binary in the vendor\n" "partition." -msgstr "" -"AIDL ํŒŒ์ผ์ด ๋ฒค๋” ํŒŒํ‹ฐ์…˜์— ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ `vendor_available: true`๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค." +msgstr "AIDL ํŒŒ์ผ์ด ๋ฒค๋” ํŒŒํ‹ฐ์…˜์— ์žˆ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ `vendor_available: true`๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค." #: src/android/aidl/implementation.md:1 msgid "# Service Implementation" @@ -12605,8 +11907,7 @@ msgstr "" msgid "" "```rust,ignore\n" "//! Implementation of the `IBirthdayService` AIDL interface.\n" -"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::" -"IBirthdayService;\n" +"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::IBirthdayService;\n" "use com_example_birthdayservice::binder;" msgstr "" @@ -12632,7 +11933,8 @@ msgid "" "```" msgstr "" -#: src/android/aidl/implementation.md:26 src/android/aidl/server.md:28 src/android/aidl/client.md:37 +#: src/android/aidl/implementation.md:26 src/android/aidl/server.md:28 +#: src/android/aidl/client.md:37 msgid "*birthday_service/Android.bp*:" msgstr "" @@ -12668,8 +11970,7 @@ msgid "" "```rust,ignore\n" "//! Birthday service.\n" "use birthdayservice::BirthdayService;\n" -"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::" -"BnBirthdayService;\n" +"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::BnBirthdayService;\n" "use com_example_birthdayservice::binder;" msgstr "" @@ -12775,8 +12076,7 @@ msgstr "" msgid "" "```rust,ignore\n" "//! Birthday service.\n" -"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::" -"IBirthdayService;\n" +"use com_example_birthdayservice::aidl::com::example::birthdayservice::IBirthdayService::IBirthdayService;\n" "use com_example_birthdayservice::binder;" msgstr "" @@ -12854,9 +12154,7 @@ msgstr "# API ์ˆ˜์ •" msgid "" "Let us extend the API with more functionality: we want to let clients specify a\n" "list of lines for the birthday card:" -msgstr "" -"API๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๋ด…์‹œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์ผ ์นด๋“œ์— ๋‹ด๊ธธ ๋‚ด์šฉ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก " -"ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:" +msgstr "API๋ฅผ ํ™•์žฅํ•˜์—ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด ๋ด…์‹œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์ผ ์นด๋“œ์— ๋‹ด๊ธธ ๋‚ด์šฉ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:" #: src/android/aidl/changing.md:9 msgid "" @@ -12876,9 +12174,7 @@ msgstr "# ๋กœ๊น…" msgid "" "You should use the `log` crate to automatically log to `logcat` (on-device) or\n" "`stdout` (on-host):" -msgstr "" -"`log` ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋””๋ฐ”์ด์Šค ์•ˆ์—์„œ ์ˆ˜ํ–‰๋  ๋•Œ์—๋Š” `logcat`์œผ๋กœ, ํ˜ธ์ŠคํŠธ์—์„œ ์ˆ˜ํ–‰๋  " -"๋•Œ์—๋Š” `stdout`์œผ๋กœ ๋กœ๊ทธ๊ฐ€ ์ž๋™์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "`log` ํฌ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋””๋ฐ”์ด์Šค ์•ˆ์—์„œ ์ˆ˜ํ–‰๋  ๋•Œ์—๋Š” `logcat`์œผ๋กœ, ํ˜ธ์ŠคํŠธ์—์„œ ์ˆ˜ํ–‰๋  ๋•Œ์—๋Š” `stdout`์œผ๋กœ ๋กœ๊ทธ๊ฐ€ ์ž๋™์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/android/logging.md:6 msgid "_hello_rust_logs/Android.bp_:" @@ -13021,9 +12317,7 @@ msgstr "" msgid "" "We already saw this in the [Safe FFI Wrapper\n" "exercise](../../exercises/day-3/safe-ffi-wrapper.md)." -msgstr "" -"์šฐ๋ฆฌ๋Š” ์ด๋ฏธ [Safe FFI ๋ž˜ํผ ์—ฐ์Šต๋ฌธ์ œ](../../exercises/day-3/safe-ffi-wrapper.md)์—์„œ ์ด๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ" -"๋‹ค. " +msgstr "์šฐ๋ฆฌ๋Š” ์ด๋ฏธ [Safe FFI ๋ž˜ํผ ์—ฐ์Šต๋ฌธ์ œ](../../exercises/day-3/safe-ffi-wrapper.md)์—์„œ ์ด๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. " #: src/android/interoperability/with-c.md:23 msgid "" @@ -13045,9 +12339,7 @@ msgstr "# Bindgen ์‚ฌ์šฉํ•˜๊ธฐ" msgid "" "The [bindgen](https://rust-lang.github.io/rust-bindgen/introduction.html) tool\n" "can auto-generate bindings from a C header file." -msgstr "" -"[bindgen](https://rust-lang.github.io/rust-bindgen/introduction.html)๋Š” C ํ—ค๋”ํŒŒ์ผ์—์„œ ๋Ÿฌ์ŠคํŠธ ๋ฐ”์ธ" -"๋”ฉ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค." +msgstr "[bindgen](https://rust-lang.github.io/rust-bindgen/introduction.html)๋Š” C ํ—ค๋”ํŒŒ์ผ์—์„œ ๋Ÿฌ์ŠคํŠธ ๋ฐ”์ธ๋”ฉ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค." #: src/android/interoperability/with-c/bindgen.md:6 msgid "First create a small C library:" @@ -13355,12 +12647,10 @@ msgstr "" #: src/android/interoperability/with-c/rust.md:83 msgid "" -"`#[no_mangle]` disables Rust's usual name mangling, so the exported symbol will just be the name " -"of\n" +"`#[no_mangle]` disables Rust's usual name mangling, so the exported symbol will just be the name of\n" "the function. You can also use `#[export_name = \"some_name\"]` to specify whatever name you want." msgstr "" -"`#[no_mangle]`์€ ๋Ÿฌ์ŠคํŠธ์˜ ๋„ค์ž„ ๋งน๊ธ€๋ง(name mangling)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฏ€๋กœ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋˜๋Š” ์‹ฌ๋ณผ์˜ ์ด๋ฆ„" -"์€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.\n" +"`#[no_mangle]`์€ ๋Ÿฌ์ŠคํŠธ์˜ ๋„ค์ž„ ๋งน๊ธ€๋ง(name mangling)์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฏ€๋กœ ์™ธ๋ถ€๋กœ ๋…ธ์ถœ๋˜๋Š” ์‹ฌ๋ณผ์˜ ์ด๋ฆ„์€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.\n" "์‹ฌ๋ณผ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด `#[export_name = \"some_name\"]`์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค." #: src/android/interoperability/cpp.md:1 @@ -13400,10 +12690,7 @@ msgid "" "Java can load shared objects via [Java Native Interface\n" "(JNI)](https://en.wikipedia.org/wiki/Java_Native_Interface). The [`jni`\n" "crate](https://docs.rs/jni/) allows you to create a compatible library." -msgstr "" -"์ž๋ฐ”๋Š” [Java Native Interface(JNI)](https://en.wikipedia.org/wiki/Java_Native_Interface)๋ฅผ ํ†ตํ•ด ๊ณต" -"์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [`jni` ํฌ๋ ˆ์ดํŠธ](https://docs.rs/jni/)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JNI ๋ผ์ด๋ธŒ๋Ÿฌ" -"๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgstr "์ž๋ฐ”๋Š” [Java Native Interface(JNI)](https://en.wikipedia.org/wiki/Java_Native_Interface)๋ฅผ ํ†ตํ•ด ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [`jni` ํฌ๋ ˆ์ดํŠธ](https://docs.rs/jni/)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JNI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/android/interoperability/java.md:7 msgid "First, we create a Rust function to export to Java:" @@ -13443,7 +12730,8 @@ msgid "" "```" msgstr "" -#: src/android/interoperability/java.md:32 src/android/interoperability/java.md:62 +#: src/android/interoperability/java.md:32 +#: src/android/interoperability/java.md:62 msgid "_interoperability/java/Android.bp_:" msgstr "" @@ -13520,9 +12808,7 @@ msgstr "" msgid "" "For the last exercise, we will look at one of the projects you work with. Let us\n" "group up and do this together. Some suggestions:" -msgstr "" -"๋งˆ์ง€๋ง‰ ์—ฐ์Šต๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ FFI๋กœ ๋Ÿฌ์ŠคํŠธ์™€ ์—ฐ๊ณ„ ํ•ด๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. " -"๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค: " +msgstr "๋งˆ์ง€๋ง‰ ์—ฐ์Šต๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์—…ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜๋ฅผ FFI๋กœ ๋Ÿฌ์ŠคํŠธ์™€ ์—ฐ๊ณ„ ํ•ด๋ณด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค: " #: src/exercises/day-4/afternoon.md:6 msgid "* Call your AIDL service with a client written in Rust." @@ -13555,9 +12841,7 @@ msgid "" "[contact with us on\n" "GitHub](https://github.com/google/comprehensive-rust/discussions). We would love\n" "to hear from you." -msgstr "" -"๊ฐ•์˜๊ฐ€ ์™„๋ฒฝํ•˜์ง„ ์•Š์œผ๋‹ˆ ์‹ค์ˆ˜๋‚˜ ๊ฐœ์„ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ [๊นƒํ—ˆ๋ธŒ](https://github.com/google/" -"comprehensive-rust/discussions)๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š”" +msgstr "๊ฐ•์˜๊ฐ€ ์™„๋ฒฝํ•˜์ง„ ์•Š์œผ๋‹ˆ ์‹ค์ˆ˜๋‚˜ ๊ฐœ์„ ์ ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ [๊นƒํ—ˆ๋ธŒ](https://github.com/google/comprehensive-rust/discussions)๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š”" #: src/other-resources.md:1 msgid "# Other Rust Resources" @@ -13575,8 +12859,7 @@ msgstr "## ๊ณต์‹ ๋ฌธ์„œ๋“ค" #: src/other-resources.md:8 msgid "The Rust project hosts many resources. These cover Rust in general:" -msgstr "" -"๋Ÿฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—๋Š” ์ฐธ์กฐํ•  ๋งŒํ•œ ์ž๋ฃŒ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” ๋ช‡๊ฐ€์ง€ ์ฐธ๊ณ  ๋ฌธ์„œ๋“ค์ž…๋‹ˆ๋‹ค:" +msgstr "๋Ÿฌ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—๋Š” ์ฐธ์กฐํ•  ๋งŒํ•œ ์ž๋ฃŒ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” ๋ช‡๊ฐ€์ง€ ์ฐธ๊ณ  ๋ฌธ์„œ๋“ค์ž…๋‹ˆ๋‹ค:" #: src/other-resources.md:10 msgid "" @@ -13592,14 +12875,10 @@ msgid "" "* [The Rust Reference](https://doc.rust-lang.org/reference/): an incomplete book\n" " which describes the Rust grammar and memory model." msgstr "" -"* [The Rust Programming Language](https://doc.rust-lang.org/book/): ๋Ÿฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๋ฌด๋ฃŒ ํ‘œ์ค€ ์„œ์ ์ž…" -"๋‹ˆ๋‹ค. ์–ธ์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์‚ฌ๋žŒ๋“ค์ด ๋นŒ๋“œ ํ• ์ˆ˜ ์žˆ๋Š” ๋ช‡๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.\n" -"* [Rust By Example](https://doc.rust-lang.org/rust-by-example/): ์—ฌ๋Ÿฌ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋Ÿฌ์ŠคํŠธ์˜ ๋ฌธ๋ฒ•์„ " -"๋ณด์—ฌ์ฃผ๋ฉฐ ๋•Œ๋•Œ๋กœ ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•˜๋Š” ์•ฝ๊ฐ„์˜ ์—ฐ์Šต๋ฌธ์ œ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.\n" -"* [Rust Standard Library](https://doc.rust-lang.org/std/): ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด ๋ฌธ์„œ์ž…๋‹ˆ" -"๋‹ค.\n" -"* [The Rust Reference](https://doc.rust-lang.org/reference/): ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ๋ง๊ณผ ๋Ÿฌ์ŠคํŠธ ๋ฌธ๋ฒ•์„ ์„ค๋ช…ํ•˜" -"๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.(์•„์ง ๋ถˆ์™„์ „ํ•˜๋‹คํ•จ)" +"* [The Rust Programming Language](https://doc.rust-lang.org/book/): ๋Ÿฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๋ฌด๋ฃŒ ํ‘œ์ค€ ์„œ์ ์ž…๋‹ˆ๋‹ค. ์–ธ์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…๊ณผ ์‚ฌ๋žŒ๋“ค์ด ๋นŒ๋“œ ํ• ์ˆ˜ ์žˆ๋Š” ๋ช‡๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.\n" +"* [Rust By Example](https://doc.rust-lang.org/rust-by-example/): ์—ฌ๋Ÿฌ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋Ÿฌ์ŠคํŠธ์˜ ๋ฌธ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋ฉฐ ๋•Œ๋•Œ๋กœ ์ฝ”๋“œ๋ฅผ ํ™•์žฅํ•˜๋Š” ์•ฝ๊ฐ„์˜ ์—ฐ์Šต๋ฌธ์ œ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"* [Rust Standard Library](https://doc.rust-lang.org/std/): ๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.\n" +"* [The Rust Reference](https://doc.rust-lang.org/reference/): ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ๋ง๊ณผ ๋Ÿฌ์ŠคํŠธ ๋ฌธ๋ฒ•์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.(์•„์ง ๋ถˆ์™„์ „ํ•˜๋‹คํ•จ)" #: src/other-resources.md:22 msgid "More specialized guides hosted on the official Rust site:" @@ -13616,12 +12895,9 @@ msgid "" "* [The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): an\n" " introduction to using Rust on embedded devices without an operating system." msgstr "" -"* [The Rustonomicon](https://doc.rust-lang.org/nomicon/): ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ, FFI, rawํฌ์ธํ„ฐ ์ž‘์—…" -"์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" -"* [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/): ๋Ÿฌ์ŠคํŠธ ๋ถ์ด ์ž‘์„ฑ ๋œ " -"์ดํ›„ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" -"* [The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): ์šด์˜์ฒด์ œ๊ฐ€ ์—†๋Š” ์ž„๋ฒ ๋””" -"๋“œ ์žฅ์น˜์—์„œ์˜ ๋Ÿฌ์ŠคํŠธ ์‚ฌ์šฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค." +"* [The Rustonomicon](https://doc.rust-lang.org/nomicon/): ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋Ÿฌ์ŠคํŠธ, FFI, rawํฌ์ธํ„ฐ ์ž‘์—…์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" +"* [Asynchronous Programming in Rust](https://rust-lang.github.io/async-book/): ๋Ÿฌ์ŠคํŠธ ๋ถ์ด ์ž‘์„ฑ ๋œ ์ดํ›„ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" +"* [The Embedded Rust Book](https://doc.rust-lang.org/stable/embedded-book/): ์šด์˜์ฒด์ œ๊ฐ€ ์—†๋Š” ์ž„๋ฒ ๋””๋“œ ์žฅ์น˜์—์„œ์˜ ๋Ÿฌ์ŠคํŠธ ์‚ฌ์šฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค." #: src/other-resources.md:33 msgid "## Unofficial Learning Material" @@ -13659,30 +12935,20 @@ msgid "" " exploration of Rust's memory management rules, through implementing a few\n" " different types of list structures." msgstr "" -"* [Learn Rust the Dangerous Way](http://cliffle.com/p/dangerust/): C์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ด€์ ์—์„œ ๋Ÿฌ์ŠคํŠธ" -"๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" -"* [Rust for Embedded C Programmers](https://docs.opentitan.org/doc/ug/rust_for_c/): ์ž„๋ฒ ๋””๋“œ C๊ฐœ๋ฐœ" -"์ž(ํŽŒ์›จ์–ด ๊ฐœ๋ฐœ์ž)๋ฅผ ์œ„ํ•œ ๋Ÿฌ์ŠคํŠธ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.\n" -"* [Rust for professionals](https://overexact.com/rust-for-professionals/): ๋‹ค๋ฅธ ์–ธ์–ด(C/C++, Java, " -"Python, Javascript)์™€์˜ ๋ณ‘๋ ฌ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฌ์ŠคํŠธ ๋ฌธ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" -"* [Rust on Exercism](https://exercism.org/tracks/rust): ๋Ÿฌ์ŠคํŠธ๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” 100๊ฐœ ์ด์ƒ์˜ " -"์—ฐ์Šต๋ฌธ์ œ\n" -"* [Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-material/index.html): ๋Ÿฌ์Šค" -"ํŠธ ์–ธ์–ด์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ๊ณ ๊ธ‰์„ ์ „๋ถ€ ๋‹ค๋ฃจ๋Š” ์ผ๋ จ์˜ ์ž‘์€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜, ์›น ์–ด์…ˆ๋ธ”๋ฆฌ, async/await ๊ฐ™์€ ๋ถ€๋ถ„" -"๋„ ํ•จ๊ป˜ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" -"* [Beginner's Series to Rust](https://docs.microsoft.com/en-us/shows/beginners-series-to-rust/), " -"[Take your first steps with Rust](https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/): " -"์ฒซ๋ฒˆ์งธ๋Š” 35๊ฐœ์˜ ์‹œ๋ฆฌ์ฆˆ ์˜์ƒ์ด๋ฉฐ ๋‘๋ฒˆ์งธ๋Š” ๋Ÿฌ์ŠคํŠธ์˜ ๋ฌธ๋ฒ•๊ณผ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๋Š” 11๊ฐœ์˜ ๋ชจ๋“ˆ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.\n" -"* [Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github.io/too-many-" -"lists/):\n" +"* [Learn Rust the Dangerous Way](http://cliffle.com/p/dangerust/): C์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ด€์ ์—์„œ ๋Ÿฌ์ŠคํŠธ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" +"* [Rust for Embedded C Programmers](https://docs.opentitan.org/doc/ug/rust_for_c/): ์ž„๋ฒ ๋””๋“œ C๊ฐœ๋ฐœ์ž(ํŽŒ์›จ์–ด ๊ฐœ๋ฐœ์ž)๋ฅผ ์œ„ํ•œ ๋Ÿฌ์ŠคํŠธ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.\n" +"* [Rust for professionals](https://overexact.com/rust-for-professionals/): ๋‹ค๋ฅธ ์–ธ์–ด(C/C++, Java, Python, Javascript)์™€์˜ ๋ณ‘๋ ฌ๋น„๊ต๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฌ์ŠคํŠธ ๋ฌธ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" +"* [Rust on Exercism](https://exercism.org/tracks/rust): ๋Ÿฌ์ŠคํŠธ๋ฅผ ๋ฐฐ์šฐ๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” 100๊ฐœ ์ด์ƒ์˜ ์—ฐ์Šต๋ฌธ์ œ\n" +"* [Ferrous Teaching Material](https://ferrous-systems.github.io/teaching-material/index.html): ๋Ÿฌ์ŠคํŠธ ์–ธ์–ด์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ ๊ณ ๊ธ‰์„ ์ „๋ถ€ ๋‹ค๋ฃจ๋Š” ์ผ๋ จ์˜ ์ž‘์€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜, ์›น ์–ด์…ˆ๋ธ”๋ฆฌ, async/await ๊ฐ™์€ ๋ถ€๋ถ„๋„ ํ•จ๊ป˜ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\n" +"* [Beginner's Series to Rust](https://docs.microsoft.com/en-us/shows/beginners-series-to-rust/), [Take your first steps with Rust](https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/): ์ฒซ๋ฒˆ์งธ๋Š” 35๊ฐœ์˜ ์‹œ๋ฆฌ์ฆˆ ์˜์ƒ์ด๋ฉฐ ๋‘๋ฒˆ์งธ๋Š” ๋Ÿฌ์ŠคํŠธ์˜ ๋ฌธ๋ฒ•๊ณผ ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๋Š” 11๊ฐœ์˜ ๋ชจ๋“ˆ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.\n" +"* [Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github.io/too-many-lists/):\n" " ๋ช‡๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ๋Ÿฌ์ŠคํŠธ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ทœ์น™๋“ค์„ ๊นŠ์ด์žˆ๊ฒŒ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค." #: src/other-resources.md:63 msgid "" "Please see the [Little Book of Rust Books](https://lborb.github.io/book/) for\n" "even more Rust books." -msgstr "" -"[Little Book of Rust Books](https://lborb.github.io/book/)์—์„œ ๋” ๋งŽ์€ ๋Ÿฌ์ŠคํŠธ ๋ถ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”." +msgstr "[Little Book of Rust Books](https://lborb.github.io/book/)์—์„œ ๋” ๋งŽ์€ ๋Ÿฌ์ŠคํŠธ ๋ถ์„ ํ™•์ธํ•ด๋ณด์„ธ์š”." #: src/credits.md:1 msgid "# Credits" @@ -13701,9 +12967,7 @@ msgstr "" msgid "" "The material of Comprehensive Rust is licensed under the terms of the Apache 2.0\n" "license, please see [`LICENSE`](../LICENSE) for details." -msgstr "" -"Comprehensive Rust์˜ ์ž๋ฃŒ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ๊ฑด [`LICENSE`](../LICENSE) ํ™•์ธ" -"ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "Comprehensive Rust์˜ ์ž๋ฃŒ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ๊ฑด [`LICENSE`](../LICENSE) ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/credits.md:10 msgid "## Rust by Example" @@ -13715,9 +12979,7 @@ msgid "" "Example](https://doc.rust-lang.org/rust-by-example/). Please see the\n" "`third_party/rust-by-example/` directory for details, including the license\n" "terms." -msgstr "" -"์ผ๋ถ€ ์˜ˆ์ œ์™€ ์—ฐ์Šต๋ฌธ์ œ๋Š” [Rust by Example](https://doc.rust-lang.org/rust-by-example/)์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ" -"๋‹ค. ๋ผ์ด์„ ์Šค ์กฐํ•ญ์„ ํฌํ•จํ•˜์—ฌ ์ €์žฅ์†Œ์˜ `third_party/rust-by-example/` ํด๋”๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "์ผ๋ถ€ ์˜ˆ์ œ์™€ ์—ฐ์Šต๋ฌธ์ œ๋Š” [Rust by Example](https://doc.rust-lang.org/rust-by-example/)์„ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ผ์ด์„ ์Šค ์กฐํ•ญ์„ ํฌํ•จํ•˜์—ฌ ์ €์žฅ์†Œ์˜ `third_party/rust-by-example/` ํด๋”๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/credits.md:17 msgid "## Rust on Exercism" @@ -13743,8 +13005,7 @@ msgid "" "image from [CXX](https://cxx.rs/). Please see the `third_party/cxx/` directory\n" "for details, including the license terms." msgstr "" -"4์ผ์ฐจ ์˜คํ›„ ๊ฐ•์˜ ์ค‘ [Interoperability with C++](android/interoperability/cpp.md)์—์„œ๋Š” [CXX]" -"(https://cxx.rs/)์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. \n" +"4์ผ์ฐจ ์˜คํ›„ ๊ฐ•์˜ ์ค‘ [Interoperability with C++](android/interoperability/cpp.md)์—์„œ๋Š” [CXX](https://cxx.rs/)์˜ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค. \n" "๋ผ์ด์„ ์Šค ์กฐํ•ญ์„ ํฌํ•จํ•˜์—ฌ ์ €์žฅ์†Œ์˜ `third_party/cxx/`ํด๋”๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/solutions.md:1 @@ -13760,18 +13021,14 @@ msgid "" "Feel free to ask questions about the solutions [on\n" "GitHub](https://github.com/google/comprehensive-rust/discussions). Let us know\n" "if you have a different or better solution than what is presented here." -msgstr "" -"[๊นƒํ—ˆ๋ธŒ](https://github.com/google/comprehensive-rust/discussions)์—์„œ ์ด์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ์งˆ๋ฌธํ•˜์‹œ" -"๊ณ  ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +msgstr "[๊นƒํ—ˆ๋ธŒ](https://github.com/google/comprehensive-rust/discussions)์—์„œ ์ด์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ์งˆ๋ฌธํ•˜์‹œ๊ณ  ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/exercises/solutions.md:10 msgid "" "> **Note:** Please ignore the `// ANCHOR: label` and `// ANCHOR_END: label`\n" "> comments you see in the solutions. They are there to make it possible to\n" "> re-use parts of the solutions as the exercises." -msgstr "" -"> **์ฐธ๊ณ :** `// ANCHOR: label`๊ณผ `// ANCHOR_END: label` ์ฃผ์„์€ ๋ฌธ์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”ํƒ€ ์ฃผ์„์œผ๋กœ " -"๋ฌด์‹œํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค." +msgstr "> **์ฐธ๊ณ :** `// ANCHOR: label`๊ณผ `// ANCHOR_END: label` ์ฃผ์„์€ ๋ฌธ์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”ํƒ€ ์ฃผ์„์œผ๋กœ ๋ฌด์‹œํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค." #: src/exercises/day-1/solutions-morning.md:1 msgid "# Day 1 Morning Exercises" @@ -13785,10 +13042,14 @@ msgstr "## ๋ฐฐ์—ด๊ณผ `for`๋ฐ˜๋ณต๋ฌธ" msgid "([back to exercise](for-loops.md))" msgstr "([์—ฐ์Šต๋ฌธ์ œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ](for-loops.md))" -#: src/exercises/day-1/solutions-morning.md:7 src/exercises/day-1/solutions-afternoon.md:7 -#: src/exercises/day-2/solutions-morning.md:7 src/exercises/day-2/solutions-afternoon.md:7 -#: src/exercises/day-2/solutions-afternoon.md:102 src/exercises/day-3/solutions-morning.md:7 -#: src/exercises/day-3/solutions-afternoon.md:7 src/exercises/day-4/solutions-morning.md:7 +#: src/exercises/day-1/solutions-morning.md:7 +#: src/exercises/day-1/solutions-afternoon.md:7 +#: src/exercises/day-2/solutions-morning.md:7 +#: src/exercises/day-2/solutions-afternoon.md:7 +#: src/exercises/day-2/solutions-afternoon.md:102 +#: src/exercises/day-3/solutions-morning.md:7 +#: src/exercises/day-3/solutions-afternoon.md:7 +#: src/exercises/day-4/solutions-morning.md:7 msgid "" "```rust\n" "// Copyright 2022 Google LLC\n" @@ -13884,34 +13145,18 @@ msgstr "" "### ๋ณด๋„ˆ์Šค ๋ฌธ์ œ" #: src/exercises/day-1/solutions-morning.md:80 -msgid "" -"It requires more advanced concepts. It might seem that we could use a slice-of-slices " -"(`&[&[i32]]`) as the input type to transpose and thus make our function handle any size of matrix. " -"However, this quickly breaks down: the return type cannot be `&[&[i32]]` since it needs to own the " -"data you return." +msgid "It requires more advanced concepts. It might seem that we could use a slice-of-slices (`&[&[i32]]`) as the input type to transpose and thus make our function handle any size of matrix. However, this quickly breaks down: the return type cannot be `&[&[i32]]` since it needs to own the data you return." msgstr "" -"์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ๊ณ ๊ธ‰ ๊ฐœ๋…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค์˜ ์Šฌ๋ผ์ด์Šค(slice-of-slices, `&[&[i32]]`)๋ฅผ ์ž…๋ ฅ ํƒ€" -"์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" -"ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ•ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์•ˆ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— `&[&[i32]]` ๋ฐ˜" -"ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. " +"์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ๊ณ ๊ธ‰ ๊ฐœ๋…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค์˜ ์Šฌ๋ผ์ด์Šค(slice-of-slices, `&[&[i32]]`)๋ฅผ ์ž…๋ ฅ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" +"ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ•ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์•ˆ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— `&[&[i32]]` ๋ฐ˜ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. " #: src/exercises/day-1/solutions-morning.md:82 -msgid "" -"You can attempt to use something like `Vec>`, but this doesn't work out-of-the-box " -"either: it's hard to convert from `Vec>` to `&[&[i32]]` so now you cannot easily use " -"`pretty_print` either." -msgstr "" -"`Vec>`์™€ ๊ฐ™์€ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ญ์‹œ ์‰ฝ๊ฒŒ ๋˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. " -"`Vec>` ํƒ€์ž…์„ `&[&[i32]]`๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— `pretty_print`์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์–ด๋ ค์›€" -"์ด ์žˆ์Šต๋‹ˆ๋‹ค." +msgid "You can attempt to use something like `Vec>`, but this doesn't work out-of-the-box either: it's hard to convert from `Vec>` to `&[&[i32]]` so now you cannot easily use `pretty_print` either." +msgstr "`Vec>`์™€ ๊ฐ™์€ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ญ์‹œ ์‰ฝ๊ฒŒ ๋˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. `Vec>` ํƒ€์ž…์„ `&[&[i32]]`๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— `pretty_print`์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-1/solutions-morning.md:84 -msgid "" -"Once we get to traits and generics, we'll be able to use the [`std::convert::AsRef`][1] trait to " -"abstract over anything that can be referenced as a slice." -msgstr "" -"ํŠธ๋ ˆ์ดํŠธ๋‚˜ ์ œ๋„ˆ๋ฆญ์„ ๋‹ค๋ฃจ๊ณ  ๋‚˜๋ฉด [`std::convert::AsRef`][1] ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋  " -"์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgid "Once we get to traits and generics, we'll be able to use the [`std::convert::AsRef`][1] trait to abstract over anything that can be referenced as a slice." +msgstr "ํŠธ๋ ˆ์ดํŠธ๋‚˜ ์ œ๋„ˆ๋ฆญ์„ ๋‹ค๋ฃจ๊ณ  ๋‚˜๋ฉด [`std::convert::AsRef`][1] ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด์Šค์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์„ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-1/solutions-morning.md:86 msgid "" @@ -13950,12 +13195,8 @@ msgid "" msgstr "" #: src/exercises/day-1/solutions-morning.md:113 -msgid "" -"In addition, the type itself would not enforce that the child slices are of the same length, so " -"such variable could contain an invalid matrix." -msgstr "" -"๋˜ํ•œ, ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์€ ๊ธธ์ด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜์˜ ์Šฌ๋ผ์ด์Šค๋“ค์ด ๊ฐ™์€ ๊ธธ์ด์ž„์„ ๋ณด์žฅํ•  " -"์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์˜ ๋ณ€์ˆ˜์—๋Š” ์ž˜๋ชป๋œ ํ–‰๋ ฌ์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +msgid "In addition, the type itself would not enforce that the child slices are of the same length, so such variable could contain an invalid matrix." +msgstr "๋˜ํ•œ, ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์€ ๊ธธ์ด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜์˜ ์Šฌ๋ผ์ด์Šค๋“ค์ด ๊ฐ™์€ ๊ธธ์ด์ž„์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์˜ ๋ณ€์ˆ˜์—๋Š” ์ž˜๋ชป๋œ ํ–‰๋ ฌ์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-1/solutions-morning.md:115 msgid "[1]: https://doc.rust-lang.org/std/convert/trait.AsRef.html" @@ -14417,7 +13658,8 @@ msgid "" "// ANCHOR_END: unit-tests" msgstr "" -#: src/exercises/day-2/solutions-morning.md:233 src/exercises/day-2/solutions-afternoon.md:174 +#: src/exercises/day-2/solutions-morning.md:233 +#: src/exercises/day-2/solutions-afternoon.md:174 msgid "" "fn main() {}\n" "```" @@ -14935,19 +14177,16 @@ msgstr "" #~ msgstr "" #~ "
\n" #~ " \n" -#~ "`Vec` ์—ญ์‹œ ์ œ๋„ˆ๋ฆญ ํƒ€์ž…์ž„์„ ์ฃผ๋ชฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ๋Š” ์ฒซ `push`๋ฅผ ํ†ตํ•ด ํƒ€์ž…์„ ์ถ”๋ก " -#~ "ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ `T`๋ฅผ ํ•ญ์ƒ ๋ช…์‹œํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค." +#~ "`Vec` ์—ญ์‹œ ์ œ๋„ˆ๋ฆญ ํƒ€์ž…์ž„์„ ์ฃผ๋ชฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Ÿฌ์ŠคํŠธ๋Š” ์ฒซ `push`๋ฅผ ํ†ตํ•ด ํƒ€์ž…์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ `T`๋ฅผ ํ•ญ์ƒ ๋ช…์‹œํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค." #~ msgid "" #~ "`vec![...]` is a canonical macro to use instead of `Vec::new()` and it supports\n" #~ "adding initial elements to the vector." -#~ msgstr "" -#~ "`vec![...]` ํ‘œ์ค€ ๋งคํฌ๋กœ๋กœ `Vec::new()`๋ฅผ ๋Œ€์ฒดํ•˜๊ณ , ๋ฒกํ„ฐ์— ์ถ”๊ฐ€ ์ดˆ๊ธฐ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +#~ msgstr "`vec![...]` ํ‘œ์ค€ ๋งคํฌ๋กœ๋กœ `Vec::new()`๋ฅผ ๋Œ€์ฒดํ•˜๊ณ , ๋ฒกํ„ฐ์— ์ถ”๊ฐ€ ์ดˆ๊ธฐ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #~ msgid "" #~ "* `Box` is like `std::unique_ptr` in C++.\n" -#~ "* In the above example, you can even leave out the `*` in the `println!` statement thanks to " -#~ "`Deref`." +#~ "* In the above example, you can even leave out the `*` in the `println!` statement thanks to `Deref`." #~ msgstr "" #~ "* `Box`๋Š” C++์˜ `std::unique_ptr`์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" #~ "* ์œ„์˜ ์˜ˆ์ œ์—์„œ `Deref` ๋•๋ถ„์— `println!`๊ตฌ๋ฌธ์—์„œ `*`๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค." @@ -14955,6 +14194,4 @@ msgstr "" #~ msgid "" #~ "Both traits are not to be implemented. They are implemented automatically when \n" #~ "the compiler determines itโ€™s appropriate." -#~ msgstr "" -#~ "์ด ํŠธ๋ ˆ์ดํŠธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ•˜๋Š” ํŠธ๋ ˆ์ดํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ ๋‹นํ•˜๋‹ค๊ณ  " -#~ "ํŒ๋‹จ๋˜๋ฉด ์ด ๋‘ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." +#~ msgstr "์ด ํŠธ๋ ˆ์ดํŠธ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ˆ˜๋™์œผ๋กœ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ•˜๋Š” ํŠธ๋ ˆ์ดํŠธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ ๋‹นํ•˜๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ์ด ๋‘ ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค."