diff --git a/po/ko.po b/po/ko.po index 444ad984..de85f281 100644 --- a/po/ko.po +++ b/po/ko.po @@ -1461,9 +1461,9 @@ msgid "" " solve the exercises using a local Rust installation or via the\n" " Playground." msgstr "" -"* 내장된 플레이그라운드에서는 페이지 이동시 작성된 모든 내용이 사라집니다. 따라서 로컬 환경이나 외부 플레이그라운드 사이트에서 연습문제를 해결하는 것이 좋습니다.\n" +"* 유닛 테스트는 내장 플레이그라운드에서 실행이 안됩니다. 외부 플레이그라운드 사이트에 붙여넣어 테스트를 실행하시기 바랍니다.\n" "\n" -"* 유닛 테스트는 내장 플레이그라운드에서 실행이 안됩니다. 외부 플레이그라운드 사이트에 붙여넣어 테스트를 실행하시기 바랍니다." +"* 내장된 플레이그라운드에서는 페이지 이동시 작성된 모든 내용이 사라집니다. 따라서 로컬 환경이나 외부 플레이그라운드 사이트에서 연습문제를 해결하는 것이 좋습니다." #: src/cargo/running-locally.md:1 msgid "# Running Code Locally with Cargo" @@ -1652,7 +1652,7 @@ msgstr "첫 날 강의의 목표는, 러스트에서 그 유명한 빌림 확인 msgid "" "If you're teaching this in a classroom, this is a good place to go over the\n" "schedule. We suggest splitting the day into two parts (following the slides):" -msgstr "만약 당신이 강의실에서 가르치고 있다면, 이 슬라이드는 일정을 검토하기에 적합한 곳입니다. 하루치 강의를 아래처럼 오전 오후로 나누어 진행하는 것을 추천합니다. (슬라이드가 그런식으로나뉘어 있습니다.)" +msgstr "만약 당신이 강의실에서 가르치고 있다면, 이 슬라이드는 일정을 검토하기에 적합한 곳입니다. 하루치 강의를 아래처럼 오전 오후로 나누어 진행하는 것을 추천합니다. (슬라이드가 그런식으로 나뉘어 있습니다.)" #: src/welcome-day-1.md:36 msgid "" @@ -2221,6 +2221,13 @@ msgid "" "\n" "* Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be easier to read." msgstr "" +"* 배열은, 같은 타입 `T`의 값이 `N`개 있는 것입니다. 여기서 `N`은 컴파일 타임에 결정된 값이어야 합니다. 이 길이도 타입의 일부입니다. 따라서, `[u8; 3]`와 `[u8; 4]`은 서로 다른 타입입니다.\n" +"\n" +"* 리터럴을 사용하여 배열에 값을 할당할 수 있습니다.\n" +"\n" +"* 포매팅 문자열에서 `?`는 디버깅 출력을 의미합니다. `{}`는 기본 출력이며, `{:?}`는 디버깅 출력입니다. `{a}`, `{a:?}`와 같이 출력할 변수 이름을 포매팅 문자열에 포함시킬 수도 있으며, 이 경우 인자 `a`는 별도의 인자로 추가하지 않습니다.\n" +"\n" +"* `#`을 추가하면(`{a:#?}`) 좀 더 읽기 쉬운 \\\"이쁜\\\" 형태로 출력이 됩니다." #: src/basic-syntax/compound-types.md:47 msgid "Tuples:" @@ -2461,7 +2468,7 @@ msgid "" " (main difference: it can only contain UTF-8 encoded bytes and will never use a small-string optimization).\n" " " msgstr "" -"* `&str`은 문자열 슬라이스의 불변 참조입니다. 러스트에서 문자열은 UTF-8로 인코딩된 데이터를 의미합니다. 문자열 리터럴(`\\\"Hello\\\"`)은 프로그램 바이너리에 저장됩니다.\n" +"* `&str`은 문자열 슬라이스의 불변 참조입니다. 러스트에서 문자열은 UTF-8로 인코딩된 데이터를 의미합니다. 문자열 리터럴(`\"Hello\"`)은 프로그램 바이너리에 저장됩니다.\n" "\n" "* 러스트의 `String`타입은 실제로는 문자열을 이루는 바이트에 대한 백터(`Vec`)입니다. `Vec`가 `T`를 소유하고 있듯이, `String`이 가리키고 있는 문자열은 `String`의 소유입니다.\n" "\n" @@ -2702,7 +2709,7 @@ msgid "" "\n" "* Alternatively, use the Rust Playground." msgstr "" -"* 배열과 `for` 반복문.* 가능하다면 러스트가 설치된 로컬 환경에서 진행하세요. 그러는 편이 텍스트 에디터의 자동완성 기능의 도움을 받을 수 있어서 좋습니다. [카고 사용하기][Using Cargo] 을 참조하시기 바랍니다.\n" +"* 가능하다면 러스트가 설치된 로컬 환경에서 진행하세요. 그러는 편이 텍스트 에디터의 자동완성 기능의 도움을 받을 수 있어서 좋습니다. [카고 사용하기][Using Cargo] 을 참조하시기 바랍니다.\n" "\n" "* 혹은 러스트 플레이그라운드를 이용할 수 있습니다." @@ -3979,7 +3986,7 @@ msgstr "" #: src/ownership/borrowing.md:27 msgid "Notes on stack returns:" -msgstr "" +msgstr "스택에 할당된 값을 리턴하는 것에 대한 참고:" #: src/ownership/borrowing.md:28 msgid "" @@ -4817,6 +4824,50 @@ msgid "" "* Use struct update syntax to define a new structure using `peter`. Note that the variable `peter` will no longer be accessible afterwards.\n" "* Use `{:#?}` when printing structs to request the `Debug` representation." msgstr "" +"* `new`함수를 다음처럼 구조체 이름 대신 `Self`를 사용하여 작성해도 됩니다.\n" +"\n" +" ```rust,editable\n" +" #[derive(Debug)]\n" +" struct Person {\n" +" name: String,\n" +" age: u8,\n" +" }\n" +" impl Person {\n" +" fn new(name: String, age: u8) -> Self {\n" +" Self { name, age }\n" +" }\n" +" }\n" +" ``` \n" +"* `Default` 트레잇을 구현해보세요. 필드 몇개는 초기화하고 나머지 필드는 디폴트 값을 사용할 수 있습니다.\n" +"\n" +" ```rust,editable\n" +" #[derive(Debug)]\n" +" struct Person {\n" +" name: String,\n" +" age: u8,\n" +" }\n" +" impl Default for Person {\n" +" fn default() -> Person {\n" +" Person {\n" +" name: \"Bot\".to_string(),\n" +" age: 0,\n" +" }\n" +" }\n" +" }\n" +" fn create_default() {\n" +" let tmp = Person {\n" +" ..Default::default()\n" +" };\n" +" let tmp = Person {\n" +" name: \"Sam\".to_string(),\n" +" ..Default::default()\n" +" };\n" +" }\n" +" ```\n" +"\n" +"* 메서드는 `impl` 블록에 정의됩니다.\n" +"* `peter`와 구조체 업데이트 문법을 사용하여 새로운 구조체 인스턴스를 만들어보세요. 이때, `peter`는 더이상 사용할 수 없게 됩니다.\n" +"* 구조체를 `Debug` 형태로 출력하려면 `{:#?}`를 사용하세요." #: src/enums.md:1 msgid "# Enums" @@ -5122,6 +5173,35 @@ msgid "" " }\n" " ```" msgstr "" +"* 러스트는 열거형 variant를 구분하기 위해 내부적으로 식별자(discriminant) 필드를 사용합니다.\n" +"\n" +"* C와의 연동과 같은 이유로 식별자를 직접 지정할 수도 있습니다:\n" +" \n" +" ```rust,editable\n" +" #[repr(u32)]\n" +" enum Bar {\n" +" A, // 0\n" +" B = 10000,\n" +" C, // 10001\n" +" }\n" +" \n" +" fn main() {\n" +" println!(\"A: {}\", Bar::A as u32);\n" +" println!(\"B: {}\", Bar::B as u32);\n" +" println!(\"C: {}\", Bar::C as u32);\n" +" }\n" +" ```\n" +"\n" +" `repr` 속성이 없다면 10001이 2 바이트로 표현가능하기 때문에 식별자의 타입 크기는 2 바이트가 됩니다.\n" +"\n" +"* 다른 타입들도 확인해보세요.\n" +"\n" +" * `dbg_size!(bool)`: size 1 bytes, align: 1 bytes\n" +" * `dbg_size!(Option)`: size 1 bytes, align: 1 bytes (니치 최적화, 아래 설명 참조)\n" +" * `dbg_size!(&i32)`: size 8 bytes, align: 8 bytes (64비트 머신인 경우)\n" +" * `dbg_size!(Option<&i32>)`: size 8 bytes, align: 8 bytes (널포인터 최적화, 아래 설명 참조)\n" +"\n" +"* 니치 최적화: 러스트는 열거형 식별자를 사용되지 않은 비트 패턴과 병합합니다." #: src/methods.md:3 msgid "" @@ -6749,6 +6829,11 @@ 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" " " msgstr "" +"* 만일 `Box`를 사용하지 않고 `List`에 직접 `List`를 포함하려고 시도한다면, 컴파일러는 구조체의 고정 크기를 계산할 수 없습니다. 컴파일러가 보기에 무한대의 크기로 보일 것입니다.\n" +"\n" +"* `Box`는 일반 포인터와 크기가 같기 때문에 크기를 계산하는 데 문제가 없습니다. 다만 힙에 위치한 `List`의 다음 요소를 가리킬 뿐입니다.\n" +"\n" +"* `List` 정의에서 `Box`를 제거하면 어떤 컴파일러 에러가 나오는지 같이 살펴보세요. “Recursive with indirection”라는 메시지를 보면, 값을 직접 저장하는 대신 `Box`나 비슷한 다른 종류의 참조 타입이 필요하다는 힌트를 얻을 수 있습니다." #: src/std/box-niche.md:1 msgid "# Niche Optimization"