diff --git a/po/ko.po b/po/ko.po index 87f4667e..ae5b4155 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-17 15:29+0900\n" +"PO-Revision-Date: 2023-02-19 06:58+0000\n" "Last-Translator: keispace \n" "Language-Team: \n" "Language: ko\n" @@ -1172,19 +1172,22 @@ msgstr "# ๋‹ค๋ฅธ ์–ธ์–ด๋“ค" msgid "" "The course has been translated into other languages by a set of wonderful\n" "volunteers:" -msgstr "์ด ๊ณผ์ •์€ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค." +msgstr "์ด ๊ณผ์ •์€ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์•ˆ์€ ๋ฒˆ์—ญ์— ๋„์›€ ์ฃผ์‹  ๋ถ„๋“ค์ž…๋‹ˆ๋‹ค." #: src/running-the-course/translations.md:6 -msgid "* [Brazilian Portuguese][pt-BR] by [@rastringer] and [@hugojacob]." +msgid "" +"* [Brazilian Portuguese][pt-BR] by [@rastringer] and [@hugojacob].\n" +"* [Korean][ko] by [@keispace], [@jiyongp] and [@jooyunghan]." msgstr "" "* [์˜์–ด][en]\n" -"* [๋ธŒ๋ผ์งˆ ํฌ๋ฅดํˆฌ๊ฐˆ์–ด][pt-BR] ([@rastringer], [@hugojacob])." +"* [๋ธŒ๋ผ์งˆ ํฌ๋ฅดํˆฌ๊ฐˆ์–ด][pt-BR] ([@rastringer], [@hugojacob]).\n" +"* [ํ•œ๊ตญ์–ด][ko] ([@keispace], [@jiyongp], [@jooyunghan])" -#: src/running-the-course/translations.md:8 +#: src/running-the-course/translations.md:9 msgid "Use the language picker in the top-right corner to switch between languages." msgstr "ํŽ˜์ด์ง€ ์˜ค๋ฅธ์ชฝ ์œ„์˜ ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." -#: src/running-the-course/translations.md:10 +#: src/running-the-course/translations.md:11 msgid "" "If you want to help with this effort, please see [our instructions] for how to\n" "get going. Translations are coordinated on the [issue tracker]." @@ -1192,18 +1195,26 @@ msgstr "" "์ด ๊ณผ์ •์˜ ๋ฒˆ์—ญ ์ž‘์—…์— ๋„์›€์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด [์—ฌ๊ธฐ][our instructions] ์„ค๋ช…๋œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.\n" "์ง„ํ–‰ ์ค‘์ธ ๋ฒˆ์—ญ ์ž‘์—…์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ [์ด์Šˆ ํŠธ๋ž˜์ปค][issue tracker]๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”." -#: src/running-the-course/translations.md:13 +#: src/running-the-course/translations.md:14 msgid "" "[pt-BR]: https://google.github.io/comprehensive-rust/pt-BR/\n" +"[ko]: https://google.github.io/comprehensive-rust/ko/\n" "[@rastringer]: https://github.com/rastringer\n" "[@hugojacob]: https://github.com/hugojacob\n" +"[@keispace]: https://github.com/keispace\n" +"[@jiyongp]: https://github.com/jiyongp\n" +"[@jooyunghan]: https://github.com/jooyunghan\n" "[our instructions]: https://github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md\n" "[issue tracker]: https://github.com/google/comprehensive-rust/issues/282" msgstr "" "[en]: https://google.github.io/comprehensive-rust/\n" "[pt-BR]: https://google.github.io/comprehensive-rust/pt-BR/\n" +"[ko]: https://google.github.io/comprehensive-rust/ko/\n" "[@rastringer]: https://github.com/rastringer\n" "[@hugojacob]: https://github.com/hugojacob\n" +"[@keispace]: https://github.com/keispace\n" +"[@jiyongp]: https://github.com/jiyongp\n" +"[@jooyunghan]: https://github.com/jooyunghan\n" "[our instructions]: https://github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md\n" "[issue tracker]: https://github.com/google/comprehensive-rust/issues/282" @@ -5877,9 +5888,9 @@ msgstr "" msgid "" "
\n" " \n" -"Consider emphasizing on \"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 won't be possible to\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" "
" @@ -5981,7 +5992,7 @@ msgid "" " * 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 " +"* 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" @@ -6071,7 +6082,7 @@ msgstr "" "* ์ฐธ์กฐ๋ฅผ ๋งค์นญํ•˜๋Š” ๊ฒƒ๋„ ์‹œ์—ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" "* ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์— \"๋ฐ˜๋ฐ• ๋ถˆ๊ฐ€๋Šฅ ํŒจํ„ด(irrefutable pattern)\"์ด๋ž€ ์šฉ์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๊ทธ ์˜" "๋ฏธ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" -" \n" +"\n" "" #: src/pattern-matching/destructuring-enums.md:1 @@ -6991,7 +7002,6 @@ msgid "You can use `break` and `continue` here as usual." msgstr "๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ `break` ์™€ `continue`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/control-flow/for-expressions.md:22 -#, fuzzy msgid "" "
\n" " \n" @@ -7006,8 +7016,8 @@ msgstr "" "* ๋Ÿฌ์ŠคํŠธ๋Š” ์ธ๋ฑ์Šค ๋ฐ˜๋ณต์„ ์œ„ํ•ด ๋ณ„๋„์˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. \n" "* `(0..10)`์€ `Iterator` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ”์œ„(range) ๊ฐ’์ž…๋‹ˆ๋‹ค. \n" "* `step_by`๋Š” ๋ฐ˜๋ณต์ž์˜ ์š”์†Œ๋“ค์„ ๊ฑด๋„ˆ๋›ฐ๋Š” ๋˜๋‹ค๋ฅธ `Iterator`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.\n" -" \n" -"
" +"* ๋ฒกํ„ฐ ์š”์†Œ๋“ค์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๋ฅผ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. `v` ๋ฒกํ„ฐ๋ฅผ ๊ฐ€๋ณ€ ๋ณ€์ˆ˜๋กœ ๋ณ€๊ฒฝ" +"ํ•˜๊ณ  ๋ฃจํ”„๋Š” `for x in v.iter_mut()`๋กœ ์ˆ˜์ •ํ•˜์„ธ์š”." #: src/control-flow/loop-expressions.md:1 msgid "# `loop` expressions" @@ -7291,14 +7301,12 @@ msgid "" msgstr "" #: src/std/string.md:30 -#, fuzzy msgid "" "* `len()` returns the size of the `String` in bytes, not its length in characters.\n" "* `chars()` returns an iterator over the actual characters." msgstr "" -"* `len`์€ `String`์˜ ๊ธ€์ž ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๋ฐ”์ดํŠธ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" -"* `chars`์€ ์‹ค์ œ ๋ฌธ์ž๋“ค์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" -"* `String`์€ `Deref`์˜ ๊ตฌํ˜„์œผ๋กœ `str`์˜ ๋ฉ”์„œ๋“œ์— ํˆฌ๋ช…ํ•˜๊ฒŒ ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +"* `len()`์€ `String`์˜ ๊ธ€์ž ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๋ฐ”์ดํŠธ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.\n" +"* `chars()`์€ ์‹ค์ œ ๋ฌธ์ž๋“ค์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค." #: src/std/vec.md:1 msgid "# `Vec`" @@ -7590,19 +7598,12 @@ msgid "" msgstr "" #: src/std/box-recursive.md:33 -#, fuzzy 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 "" -"
\n" -" \n" -"๋งŒ์ผ `Box`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  `List`์— ์ง์ ‘ `List`๋ฅผ ํฌํ•จํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๊ณ ์ • " -"ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณด๊ธฐ์— ๋ฌดํ•œ๋Œ€์˜ ํฌ๊ธฐ๋กœ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" -" \n" -"`Box`๋Š” ์ผ๋ฐ˜ ํฌ์ธํ„ฐ์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํž™์— ์œ„์น˜ํ•œ " -"`List`์˜ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฟ์ž…๋‹ˆ๋‹ค. \n" -"
" +"* ๋งŒ์ผ `Box`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  `List`์— ์ง์ ‘ `List`๋ฅผ ํฌํ•จํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ๋‹ค๋ฉด, ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ตฌ์กฐ์ฒด์˜ ๊ณ " +"์ • ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณด๊ธฐ์— ๋ฌดํ•œ๋Œ€์˜ ํฌ๊ธฐ๋กœ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/std/box-recursive.md:36 msgid "" @@ -7610,6 +7611,8 @@ msgid "" "next\n" "element of the `List` in the heap." msgstr "" +"* `Box`๋Š” ์ผ๋ฐ˜ ํฌ์ธํ„ฐ์™€ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ํž™์— ์œ„์น˜ํ•œ " +"`List`์˜ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋ฟ์ž…๋‹ˆ๋‹ค." #: src/std/box-recursive.md:39 msgid "" @@ -7619,6 +7622,11 @@ msgid "" " \n" "" msgstr "" +"* `List` ์ •์˜์—์„œ `Box`๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์–ด๋–ค ์ปดํŒŒ์ผ๋Ÿฌ ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ๊ฐ™์ด ์‚ดํŽด๋ณด์„ธ์š”. โ€œRecursive with " +"indirectionโ€๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ฉด, ๊ฐ’์„ ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  `Box`๋‚˜ ๋น„์Šทํ•œ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ์ฐธ์กฐ ํƒ€์ž…์ด ํ•„์š”" +"ํ•˜๋‹ค๋Š” ํžŒํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +" \n" +"" #: src/std/box-niche.md:1 msgid "# Niche Optimization" @@ -7674,7 +7682,6 @@ msgid "" msgstr "" #: src/std/rc.md:18 -#, fuzzy msgid "" "* If you need to mutate the data inside an `Rc`, you will need to wrap the data in\n" " a type such as [`Cell` or `RefCell`][2].\n" @@ -7682,22 +7689,24 @@ msgid "" "* You can *downgrade* a shared pointer into a [`Weak`][4] pointer to create cycles\n" " that will get dropped." msgstr "" -"`Rc`๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ [`Cell` ๋˜๋Š” `RefCell`][2]๋กœ ๋ž˜ํ•‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.\n" -"๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์ธ ๊ฒฝ์šฐ [`Arc`][3]๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +"* `Rc`๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ [`Cell` ๋˜๋Š” `RefCell`][2]๋กœ ๋ž˜ํ•‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.\n" +"* ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์ธ ๊ฒฝ์šฐ [`Arc`][3]๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.\n" +"* drop ๊ฐ€๋Šฅํ•œ ์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ณต์œ  ํฌ์ธํ„ฐ๋ฅผ [`Weak`][4] ํฌ์ธํ„ฐ๋กœ **๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ**ํ•  ์ˆ˜๋„ ์žˆ" +"์Šต๋‹ˆ๋‹ค." #: src/std/rc.md:24 -#, fuzzy msgid "" "[1]: https://doc.rust-lang.org/std/rc/struct.Rc.html\n" "[2]: https://doc.rust-lang.org/std/cell/index.html\n" "[3]: ../concurrency/shared_state/arc.md\n" "[4]: https://doc.rust-lang.org/std/rc/struct.Weak.html" msgstr "" -"[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n" -"[2]: https://doc.rust-lang.org/std/sync/struct.Mutex.html" +"[1]: https://doc.rust-lang.org/std/rc/struct.Rc.html\n" +"[2]: https://doc.rust-lang.org/std/cell/index.html\n" +"[3]: ../concurrency/shared_state/arc.md\n" +"[4]: https://doc.rust-lang.org/std/rc/struct.Weak.html" #: src/std/rc.md:31 -#, fuzzy msgid "" "* Like C++'s `std::shared_ptr`.\n" "* `clone` is cheap: creates a pointer to the same allocation and increases the reference count.\n" @@ -7710,20 +7719,19 @@ msgstr "" "* C++์˜ `std::shared_ptr`์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.\n" "* `clone`์€ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ํ• ๋‹น์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฐธ์กฐ ์นด์šดํŠธ๋ฅผ ๋Š˜๋ฆผ๋‹ˆ๋‹ค.\n" "* `make_mut`๋Š” ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ๋‚ด๋ถ€ ๊ฐ’์„ ๋ณต์ œํ•˜๊ณ ( (\"clone-on-write\") ) ๊ฐ€๋ณ€ ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ" -"๋‹ค." +"๋‹ค.\n" +"* `Rc`๋Š” `downgrade()`๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ **weak ์ฐธ์กฐ ์นด์šดํŠธ**๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ˆœํ™˜๊ตฌ" +"์กฐ๋ผ ํ•˜๋”๋ผ๋„ drop์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ `RefCell` ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)" #: src/std/rc.md:38 -#, fuzzy msgid "" "```rust,editable\n" "use std::rc::{Rc, Weak};\n" "use std::cell::RefCell;" msgstr "" -"๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.:\n" -" \n" "```rust,editable\n" -"use std::sync::{Arc, Mutex};\n" -"use std::thread;" +"use std::rc::{Rc, Weak};\n" +"use std::cell::RefCell;" #: src/std/rc.md:42 msgid "" @@ -7816,7 +7824,6 @@ msgid "Modules are a privacy boundary:" msgstr "๋ชจ๋“ˆ์˜ ํƒ€์ž…์ด๋‚˜ ํ•จ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๊นฅ์— ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." #: src/modules/visibility.md:5 -#, fuzzy msgid "" "* Module items are private by default (hides implementation details).\n" "* Parent and sibling items are always visible.\n" @@ -7824,7 +7831,8 @@ msgid "" " descendants of `foo`." msgstr "" "* ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ์˜ ์„ธ๋ถ€ ๊ตฌํ˜„ ๋‚ด์šฉ์ด ๊ฐ์ถฐ์ง‘๋‹ˆ๋‹ค.\n" -"* ๋ถ€๋ชจ์™€ ์ด์›ƒ ํ•ญ๋ชฉ์—์„œ๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." +"* ๋ถ€๋ชจ์™€ ์ด์›ƒ ํ•ญ๋ชฉ์€ ์–ธ์ œ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.\n" +"* ์ฆ‰, ๋ชจ๋“ˆ `foo`์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์ด๋ผ๋ฉด `foo` ์•„๋ž˜์˜ ๋ชจ๋“  ๋ชจ๋“ˆ์—์„œ ์ ‘๊ทผ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค." #: src/modules/visibility.md:10 msgid "" @@ -8419,7 +8427,6 @@ msgid "We will now look at some of the most common traits of the Rust standard l msgstr "๋Ÿฌ์ŠคํŠธ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ”์šฉ ํŠธ๋ ˆ์ดํŠธ๋“ค์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:" #: src/traits/important-traits.md:5 -#, fuzzy msgid "" "* [`Iterator`][1] and [`IntoIterator`][2] used in `for` loops,\n" "* [`From`][3] and [`Into`][4] used to convert values,\n" @@ -8428,11 +8435,12 @@ msgid "" "* [`Drop`][9] used for defining destructors.\n" "* [`Default`][10] used to construct a default instance of a type." msgstr "" -"* `Iterator`์™€ `IntoIterator` ํŠธ๋ ˆ์ดํŠธ๋Š” `for` ๋ฃจํ”„์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" -"* `From`๊ณผ `Into` ํŠธ๋ ˆ์ดํŠธ๋Š” ๊ฐ’์„ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" -"* `Read`์™€ `Write` ํŠธ๋ ˆ์ดํŠธ๋Š” I/O์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" -"* `Add`, `Mul` ๋“ฑ์˜ ํŠธ๋ ˆ์ดํŠธ๋“ค์€ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(overloading)์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" -"* `Drop` ํŠธ๋ ˆ์ดํŠธ๋Š” ์†Œ๋ฉธ์ž ์ •์˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค." +"* [`Iterator`][1]์™€ [`IntoIterator`][2] ํŠธ๋ ˆ์ดํŠธ๋Š” `for` ๋ฃจํ”„์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" +"* [`From`][3]๊ณผ [`Into`][4] ํŠธ๋ ˆ์ดํŠธ๋Š” ๊ฐ’์„ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" +"* [`Read`][5]์™€ [`Write`][6] ํŠธ๋ ˆ์ดํŠธ๋Š” I/O์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" +"* [`Add`][7], [`Mul`][8] ๋“ฑ์˜ ํŠธ๋ ˆ์ดํŠธ๋“ค์€ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(overloading)์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" +"* [`Drop`][9] ํŠธ๋ ˆ์ดํŠธ๋Š” ์†Œ๋ฉธ์ž ์ •์˜์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.\n" +"* [`Default`][10] ํŠธ๋ ˆ์ดํŠธ๋Š” ์–ด๋–ค ํƒ€์ž…์˜ ๊ธฐ๋ณธ๊ฐ’ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค." #: src/traits/important-traits.md:12 msgid "" @@ -8568,22 +8576,20 @@ msgstr "" "์ด๋Š” ๋˜ํ•œ `Iterator>`์„ `Result, E>`๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ‹์ง„ ์ž‘์—…๋„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/traits/from-iterator.md:28 -#, fuzzy msgid "" "[1]: https://doc.rust-lang.org/std/iter/trait.FromIterator.html\n" "[2]: https://doc.rust-lang.org/std/iter/trait.Iterator.html" msgstr "" -"[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n" -"[2]: https://doc.rust-lang.org/std/sync/struct.Mutex.html" +"[1]: https://doc.rust-lang.org/std/iter/trait.FromIterator.html\n" +"[2]: https://doc.rust-lang.org/std/iter/trait.Iterator.html" #: src/traits/from-into.md:1 msgid "# `From` and `Into`" msgstr "# `From`๊ณผ `Into`" #: src/traits/from-into.md:3 -#, fuzzy msgid "Types implement [`From`][1] and [`Into`][2] to facilitate type conversions:" -msgstr "ํƒ€์ž…์€ ์šฉ์ดํ•œ ํ˜•๋ณ€ํ™˜์„ ์œ„ํ•ด `From`๊ณผ `Into`๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:" +msgstr "ํƒ€์ž…์€ ์šฉ์ดํ•œ ํ˜•๋ณ€ํ™˜์„ ์œ„ํ•ด [`From`][1]๊ณผ [`Into`][2]๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค." #: src/traits/from-into.md:5 msgid "" @@ -8599,9 +8605,8 @@ msgid "" msgstr "" #: src/traits/from-into.md:15 -#, fuzzy msgid "[`Into`][2] is automatically implemented when [`From`][1] is implemented:" -msgstr "`From`์ด ๊ตฌํ˜„๋˜๋ฉด `Into` ์—ญ์‹œ ์ž๋™์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค:" +msgstr "[`From`][1]์ด ๊ตฌํ˜„๋˜๋ฉด [`Into`][2] ์—ญ์‹œ ์ž๋™์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค." #: src/traits/from-into.md:17 msgid "" @@ -8638,13 +8643,12 @@ msgstr "" "" #: src/traits/from-into.md:35 -#, fuzzy msgid "" "[1]: https://doc.rust-lang.org/std/convert/trait.From.html\n" "[2]: https://doc.rust-lang.org/std/convert/trait.Into.html" msgstr "" -"[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n" -"[2]: https://doc.rust-lang.org/std/sync/struct.Mutex.html" +"[1]: https://doc.rust-lang.org/std/convert/trait.From.html\n" +"[2]: https://doc.rust-lang.org/std/convert/trait.Into.html" #: src/traits/read-write.md:1 msgid "# `Read` and `Write`" @@ -8715,14 +8719,14 @@ msgid "" msgstr "" #: src/traits/read-write.md:42 -#, fuzzy msgid "" "[1]: https://doc.rust-lang.org/std/io/trait.Read.html\n" "[2]: https://doc.rust-lang.org/std/io/trait.BufRead.html\n" "[3]: https://doc.rust-lang.org/std/io/trait.Write.html" msgstr "" -"[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n" -"[2]: https://doc.rust-lang.org/std/sync/struct.Mutex.html" +"[1]: https://doc.rust-lang.org/std/io/trait.Read.html\n" +"[2]: https://doc.rust-lang.org/std/io/trait.BufRead.html\n" +"[3]: https://doc.rust-lang.org/std/io/trait.Write.html" #: src/traits/operators.md:1 msgid "# `Add`, `Mul`, ..." @@ -9061,15 +9065,16 @@ msgid "# Trait Bounds" msgstr "# ์ œ๋„ˆ๋ฆญ ํƒ€์ž… ์ œํ•œ(ํŠธ๋ ˆ์ดํŠธ ๊ฒฝ๊ณ„, Trait Bounds)" #: src/generics/trait-bounds.md:3 -#, fuzzy 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 "`T:` ํ˜น์€ `impl` ํŠธ๋ ˆ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•  ๋•Œ ํƒ€์ž…์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:" +msgstr "" +"์ œ๋„ˆ๋ฆญ์„ ์ด์šฉํ•˜๋‹ค ๋ณด๋ฉด ํƒ€์ž…์ด ์–ด๋–ค ํŠธ๋ ˆ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ๊ทธ ํŠธ๋ ˆ" +"์ดํŠธ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." #: src/generics/trait-bounds.md:6 msgid "You can do this with `T: Trait` or `impl Trait`:" -msgstr "" +msgstr "`T: Trait` ํ˜น์€ `impl Trait`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค." #: src/generics/trait-bounds.md:8 msgid "" @@ -10732,7 +10737,6 @@ msgid "" msgstr "" #: src/unsafe/calling-unsafe-functions.md:10 -#, fuzzy msgid "" " // Safe because the indices are in the correct order, within the bounds of\n" " // the string slice, and lie on UTF-8 sequence boundaries.\n" @@ -10746,12 +10750,10 @@ msgstr "" "์—\n" " // ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.\n" " unsafe {\n" -" println!(\"{}\", emojis.get_unchecked(0..4));\n" -" println!(\"{}\", emojis.get_unchecked(4..7));\n" -" println!(\"{}\", emojis.get_unchecked(7..11));\n" -" }\n" -"}\n" -"```" +" println!(\"emoji: {}\", emojis.get_unchecked(0..4));\n" +" println!(\"emoji: {}\", emojis.get_unchecked(4..7));\n" +" println!(\"emoji: {}\", emojis.get_unchecked(7..11));\n" +" }" #: src/unsafe/calling-unsafe-functions.md:18 msgid " println!(\"char count: {}\", count_chars(unsafe { emojis.get_unchecked(0..7) }));" @@ -11367,7 +11369,6 @@ msgid "" msgstr "" #: src/concurrency/channels.md:27 -#, fuzzy msgid "" "* `mpsc` stands for Multi-Producer, Single-Consumer. `Sender` and `SyncSender` implement `Clone` " "(so\n" @@ -11376,6 +11377,9 @@ msgid "" "or\n" " `Receiver` is dropped and the channel is closed." msgstr "" +"* `mpsc`๋Š” โ€œMulti-Produce, Single-Consumerโ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. `Sender`์™€ `SyncSender`๋Š” `Clone`์„ ๊ตฌํ˜„" +"ํ•˜์ง€๋งŒ (์ฆ‰, ์—ฌ๋Ÿฌ๊ฐœ์˜ producer๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)\n" +" `Receiver`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.\n" "* `send()`์™€ `recv()`๋Š” `Result`๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ `Err`๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค๋ฉด, ์ƒ๋Œ€๋ฐฉ์˜ `Sender`๋˜๋Š” " "`Receiver`๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๊ณ  ์ฑ„๋„์ด ๋‹ซํ˜”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค." @@ -11451,7 +11455,6 @@ msgid "" msgstr "๋Ÿฌ์ŠคํŠธ๋Š” ์ฃผ๋กœ ์•„๋ž˜ ๋‘ ๊ฐ€์ง€ ํƒ€์ž…์„ ์ด์šฉํ•ด์„œ ๊ณต์œ  ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค: " #: src/concurrency/shared_state.md:6 -#, fuzzy msgid "" "* [`Arc`][1], atomic reference counted `T`: handles sharing between threads and\n" " takes care to deallocate `T` when the last reference is dropped,\n" @@ -11513,7 +11516,6 @@ msgid "[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html" msgstr "" #: src/concurrency/shared_state/arc.md:29 -#, fuzzy msgid "" "* `Arc` stands for \"Atomic Reference Counted\", a thread safe version of `Rc` that uses atomic\n" " operations.\n" @@ -11527,12 +11529,13 @@ msgid "" msgstr "" "* `Arc`๋Š” \"Atomic Reference Counted\"๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š” `Rc`๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ" "๋‹ค.\n" +"* `T`๊ฐ€ `Clone`์„ ๊ตฌํ˜„ํ•˜๋“  ์•ˆํ•˜๋“  `Arc`๋Š” `Clone`์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. `Send`์™€ `Sync`๋Š” `T`๊ฐ€ ์ด๋“ค์„ " +"๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.\n" "* `Arc::clone()`๋Š” ์•„ํ† ๋ฏน ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋•Œ ์ฝ”์ŠคํŠธ๊ฐ€ ์ข€ ์žˆ์ง€๋งŒ, ์ผ๋‹จ `clone()`์ด ๋๋‚œ " "ํ›„ `T`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.\n" "* ์ˆœํ™˜ ์ฐธ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฌ์ŠคํŠธ๋Š” ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ž™ํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ" "๋‹ค.\n" -" * ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ํ”ผํ•˜๋Š”๋ฐ `std::sync::Weak`๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" -"" +" * ์ˆœํ™˜ ์ฐธ์กฐ๋ฅผ ํ”ผํ•˜๋Š”๋ฐ `std::sync::Weak`๊ฐ€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค." #: src/concurrency/shared_state/mutex.md:1 msgid "# `Mutex`" @@ -11560,7 +11563,6 @@ msgid "" msgstr "" #: src/concurrency/shared_state/mutex.md:13 -#, fuzzy msgid "" " {\n" " let mut guard = v.lock().unwrap();\n" @@ -11568,13 +11570,9 @@ msgid "" " }" msgstr "" " {\n" -" let v = v.lock().unwrap();\n" -" println!(\"v: {v:?}\");\n" -" }\n" -"}\n" -"```\n" -" \n" -"์ฐธ๊ณ  ์‚ฌํ•ญ:" +" let mut guard = v.lock().unwrap();\n" +" guard.push(40);\n" +" }" #: src/concurrency/shared_state/mutex.md:18 msgid "" @@ -11597,7 +11595,6 @@ msgid "" msgstr "" #: src/concurrency/shared_state/mutex.md:29 -#, fuzzy msgid "" "
\n" " \n" @@ -11622,14 +11619,15 @@ msgstr "" "๋‹ค๋ฅธ ์ ์€, ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋กœ๋ถ€ํ„ฐ ์ž์œ ๋กญ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.\n" " * `Mutex`๋Š” ๋ฎคํ…์Šค๋ฅผ ํš๋“ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋””์ž์ธ ๋˜์–ด ์žˆ" "์Šต๋‹ˆ๋‹ค.\n" -"* `Mutex`๋Š” ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์— ๋Œ€ํ•œ ์ž ๊ธˆ์„ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ \"์ฝ๊ธฐ\"๋งŒ ํ•˜๋ ค" -"๊ณ  ํ•ด๋„ ์ด๋ฅผ ๋™์‹œ์— ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ•œ ๋ฒˆ์— ํ•œ ์Šค๋ ˆ๋“œ์—์„œ์˜ ์ฝ๊ธฐ๋งŒ ํ—ˆ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค. \"์ฝ๊ธฐ" -"\"์— ๋Œ€ํ•œ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜๋ฉด์„œ \"์“ฐ๊ธฐ\"์— ๋Œ€ํ•ด์„œ ์•ˆ์ „ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด `RwLock`์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\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)\" ๋˜์—ˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋ฉฐ, ์ค‘๋…๋œ ๋ฎคํ…์Šค์—์„œ `lock()`์„ ํ˜ธ์ถœํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  " -"[`PoisonError`]๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด `into_inner()`๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ " -"์žˆ์Šต๋‹ˆ๋‹ค." +" * `Mutex`๋ฅผ ํš๋“ํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํŒจ๋‹‰์ด ๋ฐœ์ƒํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ์ƒํ™ฉ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด" +"๋ฅผ `Mutex`๊ฐ€ \"์ค‘๋…(poisoned)\" ๋˜์—ˆ๋‹ค๊ณ  ํ‘œํ˜„ํ•˜๋ฉฐ,\n" +" ์ค‘๋…๋œ ๋ฎคํ…์Šค์—์„œ `lock()`์„ ํ˜ธ์ถœํ•˜๋ฉด ์‹คํŒจํ•˜๊ณ  [`PoisonError`]๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋กœ๋ถ€ํ„ฐ " +"๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด `into_inner()`๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/concurrency/shared_state/mutex.md:43 msgid "" @@ -11729,7 +11727,6 @@ msgstr "" "์ฐธ๊ณ  ์‚ฌํ•ญ:" #: src/concurrency/shared_state/example.md:54 -#, fuzzy 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" @@ -11740,6 +11737,7 @@ msgid "" msgstr "" "* `v`๋Š” `Arc`์™€ `Mutex` ๋ชจ๋‘์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” `Arc`์™€ `Mutex`๊ฐ€ ์„œ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์œ„" "ํ•œ ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.\n" +" * `Mutex`๋ฅผ `Arc`๋กœ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋ณ€ ์ƒํƒœ๋ฅผ ์Šค๋ ˆ๋“œ๋“ค ๊ฐ„์— ๊ณต์œ ํ•  ๋•Œ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.\n" "* `v: Arc<_>`๋ฅผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋จผ์ € `v2`๋กœ ๋ณต์‚ฌ๋ฅผ ํ•˜๊ณ  ์ด๋ฅผ ๊ทธ ์Šค๋ ˆ๋“œ๋กœ ์ด๋™ ํ•ด์•ผ ํ•ฉ๋‹ˆ" "๋‹ค. ๊ทธ๋ž˜์„œ ๋žŒ๋‹ค์˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— `move`๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.\n" "* ๋ธ”๋ก์€ `LockGuard`์˜ ๋ฒ”์œ„๋ฅผ ์ตœ๋Œ€ํ•œ ์ขํžˆ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n" @@ -11773,19 +11771,22 @@ msgid "" "you\n" "know it is valid." msgstr "" +"`Send`์™€ `Sync` ํŠธ๋ ˆ์ดํŠธ๋Š” [์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํŠธ๋ ˆ์ดํŠธ][3]์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํƒ€์ž…์˜ ์š”์†Œ๋“ค์ด ๋ชจ๋‘ " +"`Send`์™€ `Sync` ํƒ€์ž…์ด๋ฉด\n" +"์ž๋™์œผ๋กœ ์ด ํŠธ๋ ˆ์ดํŠธ๋“ค์„ ์ ์šฉ์‹œ์ผœ ์ค๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์—ฌ๋Ÿฌ๋ถ„ ์Šค์Šค๋กœ ๋งž๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋„ ๋ฉ๋‹ˆ" +"๋‹ค." #: src/concurrency/send-sync.md:14 -#, fuzzy msgid "" "[1]: https://doc.rust-lang.org/std/marker/trait.Send.html\n" "[2]: https://doc.rust-lang.org/std/marker/trait.Sync.html\n" "[3]: ../unsafe/unsafe-traits.md" msgstr "" -"[1]: https://doc.rust-lang.org/std/sync/struct.Arc.html\n" -"[2]: https://doc.rust-lang.org/std/sync/struct.Mutex.html" +"[1]: https://doc.rust-lang.org/std/marker/trait.Send.html\n" +"[2]: https://doc.rust-lang.org/std/marker/trait.Sync.html\n" +"[3]: ../unsafe/unsafe-traits.md" #: src/concurrency/send-sync.md:20 -#, fuzzy msgid "" "* One can think of these traits as markers that the type has certain thread-safety properties.\n" "* They can be used in the generic constraints as normal traits.\n" @@ -11795,6 +11796,7 @@ msgstr "" "* `Sync`์™€ `Send`๋Š” ์–ด๋–ค ํƒ€์ž…์ด ํŠน์ •ํ•œ ์Šค๋ ˆ๋“œ-์•ˆ์ „ ์†์„ฑ์„ ๊ฐ€์ง์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋งˆ์ปค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ" "๋‹ค.\n" "* ์ด ๋‘ ํŠธ๋ ˆ์ดํŠธ๋Š” ์ œ๋„ˆ๋ฆญ์—์„œ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠธ๋ ˆ์ดํŠธ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.\n" +"\n" "
" #: src/concurrency/send-sync/send.md:1 @@ -12128,11 +12130,10 @@ msgid "" msgstr "" #: src/exercises/day-4/link-checker.md:26 -#, fuzzy msgid "" "Finally, we'll need some way of handling errors. We use [`thiserror`][3] for\n" "that:" -msgstr "๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ [`thiserror`][3]๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค:" +msgstr "๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ [`thiserror`][3]๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค." #: src/exercises/day-4/link-checker.md:29 msgid "" @@ -13631,7 +13632,6 @@ msgid "A small selection of other guides and tutorial for Rust:" msgstr "๋Ÿฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ธฐํƒ€ ์•ˆ๋‚ด์„œ์™€ ํŠœํ† ๋ฆฌ์–ผ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค:" #: src/other-resources.md:37 -#, fuzzy msgid "" "* [Learn Rust the Dangerous Way](http://cliffle.com/p/dangerust/): covers Rust\n" " from the perspective of low-level C programmers.\n" @@ -13672,7 +13672,10 @@ msgstr "" "๋„ ํ•จ๊ป˜ ๋‹ค๋ฃน๋‹ˆ๋‹ค.\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๊ฐœ์˜ ๋ชจ๋“ˆ ์„ธํŠธ์ž…๋‹ˆ๋‹ค." +"์ฒซ๋ฒˆ์งธ๋Š” 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 "" @@ -13695,13 +13698,12 @@ msgstr "" "์œ ์šฉํ•œ ์ž๋ฃŒ์˜ ์ „์ฒด ๋ชฉ๋ก์€ [other resources](other-resources.md)์—์„œ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/credits.md:7 -#, fuzzy 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.txt`](../LICENSE." -"txt) ํ™•์ธํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." +"Comprehensive Rust์˜ ์ž๋ฃŒ๋Š” Apache 2.0 ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ๊ฑด [`LICENSE`](../LICENSE) ํ™•์ธ" +"ํ•ด ๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค." #: src/credits.md:10 msgid "## Rust by Example" @@ -13781,7 +13783,7 @@ msgstr "## ๋ฐฐ์—ด๊ณผ `for`๋ฐ˜๋ณต๋ฌธ" #: src/exercises/day-1/solutions-morning.md:5 msgid "([back to exercise](for-loops.md))" -msgstr "" +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 @@ -13873,26 +13875,33 @@ msgid "" "```\n" "### Bonus question" msgstr "" +" let transposed = transpose(matrix);\n" +" println!(\"transposed:\");\n" +" pretty_print(&transposed);\n" +"}\n" +"```\n" +"\n" +"### ๋ณด๋„ˆ์Šค ๋ฌธ์ œ" #: src/exercises/day-1/solutions-morning.md:80 -#, fuzzy 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]]`)์„ ์ž…๋ ฅ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํฌ๊ธฐ์˜ ํ–‰๋ ฌ" -"์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌํ„ด ๊ฐ’์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— `&[&[i32]]` ํƒ€์ž…์„ ์‚ฌ์šฉํ•  ์ˆœ ์—†์Šต๋‹ˆ๋‹ค. " +"์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ๊ณ ๊ธ‰ ๊ฐœ๋…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด์Šค์˜ ์Šฌ๋ผ์ด์Šค(slice-of-slices, `&[&[i32]]`)๋ฅผ ์ž…๋ ฅ ํƒ€" +"์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํฌ๊ธฐ์˜ ํ–‰๋ ฌ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.\n" +"ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ํ•ด๋ณด๋ฉด ๊ธˆ๋ฐฉ ์•ˆ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๊ฐ’์„ ์†Œ์œ ํ•ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— `&[&[i32]]` ๋ฐ˜" +"ํ™˜ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. " #: src/exercises/day-1/solutions-morning.md:82 -#, fuzzy 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>`์™€ ๊ฐ™์€ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์—ญ์‹œ ์‰ฝ๊ฒŒ ๋˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค. " "`Vec>` ํƒ€์ž…์„ `&[&[i32]]`๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— `pretty_print`์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์–ด๋ ค์›€" "์ด ์žˆ์Šต๋‹ˆ๋‹ค." @@ -13901,6 +13910,8 @@ 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 "" @@ -13943,9 +13954,8 @@ 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 "" -"๋˜ํ•œ, ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์€ ๊ธธ์ด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜์˜ ์Šฌ๋ผ์ด์Šค๋“ค์ด ๊ฐ™์€ ๊ธธ์ด(_์—ญ์ฃผ: 3_)" -"์ž„์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์˜ ๋ณ€์ˆ˜์—๋Š” ์ž˜๋ชป๋œ ํ–‰๋ ฌ(_์—ญ์ฃผ: ๊ฐ ์—ด์ด๋‚˜ ํ–‰์˜ ๊ธธ์ด๊ฐ€ " -"๋‹ค๋ฅธ_)์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." +"๋˜ํ•œ, ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์€ ๊ธธ์ด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜์˜ ์Šฌ๋ผ์ด์Šค๋“ค์ด ๊ฐ™์€ ๊ธธ์ด์ž„์„ ๋ณด์žฅํ•  " +"์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ์Šฌ๋ผ์ด์Šค ํƒ€์ž…์˜ ๋ณ€์ˆ˜์—๋Š” ์ž˜๋ชป๋œ ํ–‰๋ ฌ์ด ์ „๋‹ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค." #: src/exercises/day-1/solutions-morning.md:115 msgid "[1]: https://doc.rust-lang.org/std/convert/trait.AsRef.html"