rust-lang-ru / book Goto Github PK
View Code? Open in Web Editor NEWThe Rust Programming Language
Home Page: https://doc.rust-lang.ru/book
License: Other
The Rust Programming Language
Home Page: https://doc.rust-lang.ru/book
License: Other
Хотел бы обратиться ко всем, кто занимается переводом растбука. Разница между актуальной английской версией растбука и его русской становиться уже существенной, и обучаться по русской версии уже не получается. Например, в разделе 7.4 в английской версии есть существенное замечание о области видимости элементов, подключаемых ключевым словом use
Note that use only creates the shortcut for the particular scope in which the use occurs. Listing 7-12 moves the eat_at_restaurant function into a new child module named customer, which is then a different scope than the use statement and the function body won’t compile: ....
В русской версии этого нет, а это весьма существенное замечание для новичка. Есть новички, которые не владеют английским, и такая разница в переводе может сказаться в их обучении.
Предлагаю добавить в скобочки термин на английском вот так Вместо этого, в случае переполнения Rust выполняет оборачивание дополнительного кода (two's complement)
Потому что без уточнения по смыслу кажется, что rust оборачивает каким-то дополнительным кодом своим это переполнение, ну типо проверки выхода за границы массива
Три первые картинки в файле ch04-01-what-is-ownership.md
отформатированы криво после перевода. Вот пример первой из них в оригинале и переводе:
<img alt="Two tables: the first table contains the representation of s1 on the
stack, consisting of its length (5), capacity (5), and a pointer to the first
value in the second table. The second table contains the representation of the
string data on the heap, byte by byte." src="img/trpl04-01.svg" class="center"
style="width: 50%;" />
<img alt="Two tables: the first table contains the representation of s1 on the<br>stack, consisting of its length (5), capacity (5), and a pointer to the first<br>value in the second table. The second table contains the representation of the<br>string data on the heap, byte by byte." src="https://github.com/rust-lang-ru/book/blob/master/rustbook-ru/src/img/trpl04-01.svg?raw=true" class="">
Раздел 4.1: Что такое владение
Область видимость является диапазоном внутри программы, в котором элемент программы является действительным.
Область видимости
Другими слова, здесь есть два важных момента:
Другими словами
Не выводяться листниги в некоторых местах. Например на https://doc.rust-lang.ru/book/ch13-02-iterators.html
Вместо текста показывает строку
{{#rustdoc_include ../listings/ch13-functional-features/listing-13-13/src/main.rs:here}}
На странице ch06-01-defining-an-enum.md есть текст:
Но когда мы использовали различные структуры, каждая из которые имеет свои собственные типы
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⬆️
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀(опечатка)
Хотя на gitlocalize написано всё правильно (https://gitlocalize.com/repo/4579/ru/rustbook-en/src/ch06-01-defining-an-enum.md)
Но когда мы использовали различные структуры, каждая из которых имеет свои собственные типы
На данный момент, не все конфликты сопоставления оригинала и перевода разрешены.
Необходимо удалить то, что не соответствует оригиналу и сопоставить оставшееся.
Картинка rustbook-en/src/img/trpl15-04.svg изменилась. Нужно обновить её копию в rustbook-ru/src/img/trpl15-04.svg.
После очередной синхронизации перевода вёрстка всё также сломана, как и до этого!
Это происходит не в первый раз и я уже начинаю уставать исправлять этот кусок.
Кто принимает и апрувит работу на GitLocalize, прошу завести баг в их репозитория или объясните что идёт не так, потому что у меня нет информации, что происходит с книгой дальше, после исправления на GitLocalize.
Вот что я вижу после внесения испрвлений на GitLocalize:
Вот что я вижу после принятия этих испрвлений на GitLocalize:
Приложение D теперь называется "Средства разработки"
https://doc.rust-lang.ru/book/
Вот только нефига не так оно уже называется.
Дополнение Г - Средства разработки
https://doc.rust-lang.ru/book/appendix-04-useful-development-tools.html
В связи с чем возникает вопрос, нельзя ли выделить название appendix-04 в глобальную константу и править в одном месте? Уж не знаю, в рамках ли mdbook или в рамках онлайн-переводчика. Первое бы лучше, но не знаю, умеет ли это mdBook.
Предлагаю просто исправить параллельно с исправлением оригинала. Могу (и хочу) это сделать.
Раздел 6.3: Сокращенное управление с if let
Если у вас есть ситуация в которой ваша программа имеет слишком многословную логику, можно выразить её используя match, то помните, что if let также есть в вашем наборе инструментов Rust.
Наверное вместо то больше подойдет но. Ещё можно совсем убрать то.
Раздел: Индексирование в строках
До(в контесте абзаца):
Доступ к отдельным символам в строке, ссылаясь на них по индексу, является допустимой и распространённой операцией во многих других языках программирования. Всё равно вы получить ошибку при попытке получить доступ к частям String, используя синтаксический индекс в Rust. Рассмотрим неверный код в листинге 8-19.
После(в контесте абзаца):
Доступ к отдельным символам в строке, ссылаясь на них по индексу, является допустимой и распространённой операцией во многих других языках программирования. Однако, вы всё равно получите ошибку при попытке получить доступ к частям String, используя синтаксический индекс в Rust. Рассмотрим неверный код в листинге 8-19.
Раздел 3.5: Управление выполнением кода
Так как if является выражением, то его можно использовать в правой части кода оператора let, как в листинге 3-2.
В разделе отсутствует листинг 3-2 или не правильно указан номер листинга.
Раздел 10.2. Типажи: определение общего поведения
Ошибка в листинге 10-12:
pub trait Summarizable { fn summary(&self) -> String; }
В оригинале:
pub trait Summary { fn summarize(&self) -> String; }
Для определения структуры, указывается ключевое слово struct
и её название. Название должно описывать значение частей данных сгруппированных вместе.
Чтобы получить определённое значение поля структуры, мы можем использовать точечную нотацию (как в кортеже). Если нужен только электронный адрес, можно использовать user1.email
везде , где нужно его значение.
ch05-01-defining-structs.md.patch.txt
Also, this is a really strange construction (using ;) :
Заметим, что весь экземпляр структуры должен быть изменяемым; Rust не позволяет помечать изменяемыми отдельные поля.
I guess we should have either a comma or new sentence here. This is actual for English version of the book too.
Раздел: 2. Игра "Угадай число"
Ввод quit в самом деле завершит игру, как и любой другой ввод не являющийся числом. Однако это не оптимально, если не сказать больше. Мы хотим, чтобы игра автоматически остановитесь, когда угадан правильный номер.
Кажется корректнее было бы:
Мы хотим, чтобы игра автоматически остановилась, когда будет угадан правильный номер.
При попытке зайти на Вызов кода на Rust из других языков
- Сервер возвращает 401
Здесь https://github.com/rust-lang-ru/book/blob/master/rustbook-ru/src/appendix-01-keywords.md
в нарушение Соглашения о процессе перевода (https://github.com/rust-lang-ru/book/blob/master/CONTRIBUTING.md) тире и Дефисы используются в перемешку. Исправить на https://gitlocalize.com/repo/4579/ru/rustbook-en/src нельзя — нет прав.
В главе Трактование типа как ссылки реализуя типаж Deref есть ссылка на "Using Tuple Structs without Named Fields to Create Different Types", которой в русской версии нет. Предлагаю заменить эту ссылку на Кортежные структуры: структуры без именованных полей для создания разных типов, которая там, судя по всему, и должна быть.
✔️ 03-02. Data Types — ссылка на ГЛ
✔️ 04-01. What is ownership — ссылка на ГЛ
✔️ 04-02. References and Borrowing — ссылка на ГЛ
✔️ 05-00. Struct — ссылка на ГЛ
✔️ 06-00. Enums — ссылка на ГЛ
✔️ 05-02. Example Structs — ссылка на ГЛ
✔️ Appendix 01. Keywords — ссылка на ГЛ
✔️ Summary — ссылка на ГЛ
✔️ 14-01 Release Profiles — ссылка на ГЛ
✔️ 14-00 More About Cargo — ссылка на ГЛ
✔️ 13-00 Functional Features — ссылка на ГЛ
✔️ 02-00. Guessing game tutorial — ссылка на ГЛ
Есть вопрос по переводу названия. "Угадайка" как-то слишком несерьезно звучит. Может быть, стоит назвать "игрой в загадки"?
✔️ 16-00. Concurrency — ссылка на ГЛ
✔️ Title page — ссылка на ГЛ
✔️ 15-00 Smart pointers — ссылка на ГЛ
✔️ 10-01 Syntax — ссылка на ГЛ
В отличие от самого кода - комментарии бы тоже надо переводить.
Нашел несоответствие в раст бук на русском в главе 8, пункте 8.1. В книге на английском в этом месте говорится про заимствование в элемента вектора. А в книге на русском не соответствует код, в коде нет обращения к сотому элементу. Но основное, что код не соответствует описанию
В русском переводе смещение листингов на 1 вверх
А конкретно из этого места "Удаление вектора - удаляет все его элементы" все поплыло
Спасибо!)
Раздел 6.2: Оператор match
Таким образом, если её нет у нашего друга, то её можно добавить его в его коллекцию.
В этом файле https://github.com/rust-lang-ru/book/blob/master/rustbook-ru/src/ch03-01-variables-and-mutability.md битая ссылка в тексте "См раздел справочника Rust, посвящённый вычислению констант"
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Есть ли перевод? в английской версии всё норм, отличие только с доменом.
https://doc.rust-lang.ru/book/appendix-06-translation.html
ссылка на русский перевод ведёт на брошенную репу
P.S. И вообще, открыв как-нибудь https://doc.rust-lang.ru/book весьма трудно найти там какие-нибудь ссылки на обратную связь. Не стоит ли на первой странице добавить ссылку на актуальные репозиторий и трекер?
Рисунок под номером 4-4 неверный, он повторяет рис. 4-3. На его месте должен быть этот.
Пытался изменить ссылку на изображение в GitLocalize, не вышло, поэтому пишу здесь.
:)
[anovik@arch-vm0 rust-book.git]$ diff -Naru /tmp/ch04-03-slices.md.orig /tmp/ch04-03-slices.md.patched
--- /tmp/ch04-03-slices.md.orig 2020-07-01 17:52:32.906833243 +0300
+++ /tmp/ch04-03-slices.md.patched 2020-07-01 17:50:31.040170335 +0300
@@ -149,8 +149,8 @@
Также можно не указывать оба значения, чтобы получить срез всей строки. Это эквивалентно:
let s = String::from("hello");
let len = s.len();
-let slice = &s[3..len];
-let slice = &s[3..];
+let slice = &s[0..len];
+let slice = &s[..];
Внимание: Индексы среза строк должны соответствовать границам UTF-8 символов. Если вы попытаетесь получить срез нарушая границы символа в котором больше одного байта, то вы получите ошибку времени исполнения. В рамках этой главы мы будем предполагать только ASCII кодировку. Более детальное обсуждение UTF-8 находится в секции ["Сохранение текста с кодировкой UTF-8 в строках"] главы 8.
@@ -301,4 +301,4 @@
Владение влияет на множество других частей и концепций языка Rust. Мы будем говорить об этих концепциях на протяжении оставшихся частей книги. Давайте перейдём к главе 5 и рассмотрим группировку частей данных в структурыstruct
.
-["Сохранение текста с кодировкой UTF-8 в строках"]: ch08-02-strings.html#storing-utf-8-encoded-text-with-strings
\ В конце файла нет новой строки
+["Сохранение текста с кодировкой UTF-8 в строках"]: ch08-02-strings.html#storing-utf-8-encoded-text-with-strings
Добырй день.
Предлагаю в "Правила участия в переводе" CONTRIBUTING.md добавить правила использования тире в переводе и о том, что оно должно быть "длинным" (em dash) по умолчанию.
В книге встречется комментарий с текстом ignore: <!-- ignore -->
. Это технический коментарий для mdbook. Переводить его не нужно.
Задача информационная, выполнения не требует
В тексте используется и "хэш-карты" и "HashMap" вперемешку. Мне кажется лучше не использовать "хэш-карты", так как такое название сбивает с толку. А также будет одна стилистика.
В абзаце говориться про добавление треугольных скобок, но в примере кода их нет.
https://doc.rust-lang.ru/book/ch10-01-syntax.html#%D0%92-%D0%BE%D0%B1%D1%8A%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9
Ссылки, используемые по тексту, не работают.
[«Сырые идентификаторы]: #raw-identifiers
Предлагаю в заголовок добавить ссылку с id
### Сырые идентификаторы <a id="raw-identifiers"></a>
[объединение]: ../reference/items/unions.html
Непонятно куда ведет.
[Приложение E]: appendix-05-editions.html
Исправить расширение файла
[Приложение E]: appendix-05-editions.md
В 4.3 тип среза есть упоминание некого "дополнительного бита".
Вероятно ошибка произошла из-за некорректного перевода слова bit (которое в данном случае значит "малая часть" а не "двоичный бит"). Предлагаю альтернативый перевод: "в дополнительном кусочке синтаксиса" [0..5]
.
P.S. Я постарался сделать изменение через GitLocalize, но не разобрался и решил вместо этого оставить issue.
На странице ch04-02-references-and-borrowing
есть предложение:
В один момент времени, может существовать либо одна изменяемая ссылка, либо любое количество неизменяемых ссылка
Вот неизменяемых ссылка
звучит странно.
Наблюдаю проблему, которая, похоже, носит систематический характер.
GitLocalize не даёт редактировать "сырой" файл Markdown, а предлагает лишь работать с его "красивым" представлением. Это приводит к ошибкам в разметке. Если есть способ в GitLocalize работать с исходным файлом явно, надо это добавить в инструкцию, потому что на текущий момент не понятно, как можно исправить обнаруженные проблемы.
В качестве примера можно сравнить последний абзац файла ch03-00-common-programming-concepts.md.
Оригинал (https://github.com/rust-lang-ru/book/blob/master/rustbook-en/src/ch03-00-common-programming-concepts.md?plain=1):
Keywords
The Rust language has a set of keywords that are reserved for use by the
language only
Ключевые слова В языке Rust как и в других языках есть набор ключевых слов, зарезервированных
Глава 20, раздел 20.2 (Создание ThreadPool с помощью разработки, управляемой компилятором)
В предложении "Теперь мы ошибка возникает из-за того, что у нас нет метода execute
в структуре ThreadPool
." мы лишнее.
P.s.: Спасибо за работу над переводом!
Не смог найти никаких правил для оформления PR на опечатки и т.д. Если такие правила есть, то прошу в ответе дать ссылку.
Предлагаю добавить в скобочки термин на английском вот так Вместо этого, в случае переполнения Rust выполняет оборачивание дополнительного кода (two's complement)
Потому что без уточнения термина на английском по смыслу кажется, что Rust оборачивает каким-то дополнительным кодом своим это переполнение, ну типо проверки выхода за границы массива
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.