Code Monkey home page Code Monkey logo

book's Introduction

Язык программирования Rust (The Rust Programming Language)

В данном репозитории содержится перевод книги The Rust Programming Language.

Зачем ещё один репозиторий?

Этот репозиторий подключён к системе перевода и вся работа ведётся там. Сама система перевода нужна для отслеживания изменений в оригинале книги и за счёт этого становится более удобной поддержка перевода, так как не надо самому переводчику искать что изменилось - система сама это показывает.

GitLocalize

Проект на GitLocalize: https://gitlocalize.com/repo/4579

Правила участия в переводе

Правила участия в переводе описаны в этом документе.

book's People

Contributors

aleksandr-shevchenko avatar alexted avatar ava57r avatar blandger avatar dependabot-preview[bot] avatar dependabot[bot] avatar dluschan avatar exl avatar fan-tom avatar funkill avatar gitlocalize-app[bot] avatar glebkiselev11 avatar hazyone avatar ivanych avatar jashka34 avatar kizhyk avatar maksugr avatar mathprocessing avatar mikeost avatar mt-gitlocalize avatar p0lunin avatar razzwan avatar rusxg avatar serg-ast avatar someakk avatar telegaovoshey avatar vokamut avatar volokitty avatar wintttr avatar ydakuka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

book's Issues

Нарушение вёрстки Markdown в GitLocalize

Наблюдаю проблему, которая, похоже, носит систематический характер.
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

Перевод (https://github.com/rust-lang-ru/book/blob/master/rustbook-ru/src/ch03-00-common-programming-concepts.md?plain=1):

Ключевые слова В языке Rust как и в других языках есть набор ключевых слов, зарезервированных

Ошибка в переводе

Раздел 6.3: Сокращенное управление с if let

Если у вас есть ситуация в которой ваша программа имеет слишком многословную логику, можно выразить её используя match, то помните, что if let также есть в вашем наборе инструментов Rust.

Наверное вместо то больше подойдет но. Ещё можно совсем убрать то.

Использование тире

Добырй день.
Предлагаю в "Правила участия в переводе" CONTRIBUTING.md добавить правила использования тире в переводе и о том, что оно должно быть "длинным" (em dash) по умолчанию.

Странная опечатка

На странице ch06-01-defining-an-enum.md есть текст:

Но когда мы использовали различные структуры, каждая из которые имеет свои собственные типы
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⬆️
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀(опечатка)

Хотя на gitlocalize написано всё правильно (https://gitlocalize.com/repo/4579/ru/rustbook-en/src/ch06-01-defining-an-enum.md)

Но когда мы использовали различные структуры, каждая из которых имеет свои собственные типы

Misprint in rustbook-ru/src/ch08-02-strings.md

Раздел: Индексирование в строках

  1. Всё равно вы получить ошибку при попытке получить доступ... - Однако, вы всё равно получите ошибку при попытке получить доступ...

До(в контесте абзаца):
Доступ к отдельным символам в строке, ссылаясь на них по индексу, является допустимой и распространённой операцией во многих других языках программирования. Всё равно вы получить ошибку при попытке получить доступ к частям String, используя синтаксический индекс в Rust. Рассмотрим неверный код в листинге 8-19.

После(в контесте абзаца):
Доступ к отдельным символам в строке, ссылаясь на них по индексу, является допустимой и распространённой операцией во многих других языках программирования. Однако, вы всё равно получите ошибку при попытке получить доступ к частям String, используя синтаксический индекс в Rust. Рассмотрим неверный код в листинге 8-19.

Некорректный перевод

В 4.3 тип среза есть упоминание некого "дополнительного бита".

скриншот

Вероятно ошибка произошла из-за некорректного перевода слова bit (которое в данном случае значит "малая часть" а не "двоичный бит"). Предлагаю альтернативый перевод: "в дополнительном кусочке синтаксиса" [0..5].

P.S. Я постарался сделать изменение через GitLocalize, но не разобрался и решил вместо этого оставить issue.

Некорректная ссылка

В главе Трактование типа как ссылки реализуя типаж Deref есть ссылка на "Using Tuple Structs without Named Fields to Create Different Types", которой в русской версии нет. Предлагаю заменить эту ссылку на Кортежные структуры: структуры без именованных полей для создания разных типов, которая там, судя по всему, и должна быть.

Ошибка в переводе

Раздел: 2. Игра "Угадай число"

Ввод quit в самом деле завершит игру, как и любой другой ввод не являющийся числом. Однако это не оптимально, если не сказать больше. Мы хотим, чтобы игра автоматически остановитесь, когда угадан правильный номер.

Кажется корректнее было бы:

Мы хотим, чтобы игра автоматически остановилась, когда будет угадан правильный номер.

Ошибка в переводе

Раздел 6.2: Оператор match

Таким образом, если её нет у нашего друга, то её можно добавить его в его коллекцию.

link is obsolete

https://doc.rust-lang.ru/book/appendix-06-translation.html

ссылка на русский перевод ведёт на брошенную репу

P.S. И вообще, открыв как-нибудь https://doc.rust-lang.ru/book весьма трудно найти там какие-нибудь ссылки на обратную связь. Не стоит ли на первой странице добавить ссылку на актуальные репозиторий и трекер?

Сделать редиректы с первой версии книги

Первая версия книги лежит тут.
Необходимо:

  • добавить информационный блок о том, что перевод находится по другому адресу (как тут)
  • добавить в link rel="canonical" ссылку на текущий перевод
  • архивировать первую версию книги

Ошибка в переводе

Раздел 10.2. Типажи: определение общего поведения

Ошибка в листинге 10-12:
pub trait Summarizable { fn summary(&self) -> String; }

В оригинале:
pub trait Summary { fn summarize(&self) -> String; }

Хэш-карты и HashMap

В тексте используется и "хэш-карты" и "HashMap" вперемешку. Мне кажется лучше не использовать "хэш-карты", так как такое название сбивает с толку. А также будет одна стилистика.

Вычитанные главы

Лишнее несогласованное "мы"

Глава 20, раздел 20.2 (Создание ThreadPool с помощью разработки, управляемой компилятором)

В предложении "Теперь мы ошибка возникает из-за того, что у нас нет метода execute в структуре ThreadPool." мы лишнее.

Снимок экрана 2023-05-12 в 21 11 00

P.s.: Спасибо за работу над переводом!
Не смог найти никаких правил для оформления PR на опечатки и т.д. Если такие правила есть, то прошу в ответе дать ссылку.

Кривое окончание

На странице ch04-02-references-and-borrowing есть предложение:

В один момент времени, может существовать либо одна изменяемая ссылка, либо любое количество неизменяемых ссылка

Вот неизменяемых ссылка звучит странно.

Multiple typos in rustbook-ru/src/ch05-01-defining-structs.md

  1. месте - вместе (together);
  2. везде , где (need a comma);

Для определения структуры, указывается ключевое слово 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.

Большая разница между переводом и оригиналом.

Хотел бы обратиться ко всем, кто занимается переводом растбука. Разница между актуальной английской версией растбука и его русской становиться уже существенной, и обучаться по русской версии уже не получается. Например, в разделе 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: ....

В русской версии этого нет, а это весьма существенное замечание для новичка. Есть новички, которые не владеют английским, и такая разница в переводе может сказаться в их обучении.

Оформление картинок в главе "Что такое владение?"

Три первые картинки в файле 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&lt;br&gt;stack, consisting of its length (5), capacity (5), and a pointer to the first&lt;br&gt;value in the second table. The second table contains the representation of the&lt;br&gt;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: Что такое владение

Область видимость является диапазоном внутри программы, в котором элемент программы является действительным.

Область видимости

Другими слова, здесь есть два важных момента:

Другими словами

A typo related to get access for whole slice in rustbook-ru/src/ch04-03-slices.md

[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

Неверные сведения о языках C и C++ и ошибка перевода

  1. Дублирую это: rust-lang/book#3761
  2. Также перепутаны указатели и ссылки здесь же:
    > В языках C и C++, используются два различных оператора для вызова методов: используется `.`, если вызывается метод непосредственно у экземпляра структуры и используется `->`, если вызывается метод у ссылки на объект. Другими словами, если `object` является ссылкой, то вызовы метода `object->something()` и ` (*object).something()` являются аналогичными.

Предлагаю просто исправить параллельно с исправлением оригинала. Могу (и хочу) это сделать.

Ссылки в ru appendix-01

Ссылки, используемые по тексту, не работают.

  • [«Сырые идентификаторы]: #raw-identifiers
    Предлагаю в заголовок добавить ссылку с id

    ### Сырые идентификаторы <a id="raw-identifiers"></a>
    
  • [объединение]: ../reference/items/unions.html
    Непонятно куда ведет.

  • [Приложение E]: appendix-05-editions.html
    Исправить расширение файла

    [Приложение E]: appendix-05-editions.md
    

Смещены листинги кода в п. 8.1

Нашел несоответствие в раст бук на русском в главе 8, пункте 8.1. В книге на английском в этом месте говорится про заимствование в элемента вектора. А в книге на русском не соответствует код, в коде нет обращения к сотому элементу. Но основное, что код не соответствует описанию
image

В русском переводе смещение листингов на 1 вверх
image
image

А конкретно из этого места "Удаление вектора - удаляет все его элементы" все поплыло
image
image

Спасибо!)

two's complement перевод 3.2 Chapter

Предлагаю добавить в скобочки термин на английском вот так Вместо этого, в случае переполнения Rust выполняет оборачивание дополнительного кода (two's complement)
Потому что без уточнения термина на английском по смыслу кажется, что Rust оборачивает каким-то дополнительным кодом своим это переполнение, ну типо проверки выхода за границы массива
image
image

Разрешение конфликтов

На данный момент, не все конфликты сопоставления оригинала и перевода разрешены.

Необходимо удалить то, что не соответствует оригиналу и сопоставить оставшееся.

two's complement перевод 3.2 Chapter

Предлагаю добавить в скобочки термин на английском вот так Вместо этого, в случае переполнения Rust выполняет оборачивание дополнительного кода (two's complement)
Потому что без уточнения по смыслу кажется, что rust оборачивает каким-то дополнительным кодом своим это переполнение, ну типо проверки выхода за границы массива
image
image

Ошибка в указании листинга

Раздел 3.5: Управление выполнением кода

Так как if является выражением, то его можно использовать в правой части кода оператора let, как в листинге 3-2.

В разделе отсутствует листинг 3-2 или не правильно указан номер листинга.

приложения ли приложения (addendums, etc)

Приложение D теперь называется "Средства разработки"

https://doc.rust-lang.ru/book/

Вот только нефига не так оно уже называется.

Дополнение Г - Средства разработки

https://doc.rust-lang.ru/book/appendix-04-useful-development-tools.html

В связи с чем возникает вопрос, нельзя ли выделить название appendix-04 в глобальную константу и править в одном месте? Уж не знаю, в рамках ли mdbook или в рамках онлайн-переводчика. Первое бы лучше, но не знаю, умеет ли это mdBook.

Неисправимые теги

После очередной синхронизации перевода вёрстка всё также сломана, как и до этого!
Это происходит не в первый раз и я уже начинаю уставать исправлять этот кусок.
Кто принимает и апрувит работу на GitLocalize, прошу завести баг в их репозитория или объясните что идёт не так, потому что у меня нет информации, что происходит с книгой дальше, после исправления на GitLocalize.

Вот что я вижу после внесения испрвлений на GitLocalize:
Screenshot 2023-03-21 at 15 25 48

Вот что я вижу после принятия этих испрвлений на GitLocalize:
Screenshot 2023-03-21 at 15 18 25

Тег с ignore

В книге встречется комментарий с текстом ignore: <!-- ignore -->. Это технический коментарий для mdbook. Переводить его не нужно.

Задача информационная, выполнения не требует

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.