Skip to content

Commit

Permalink
Merge pull request #394 from rust-lang-ru/gitlocalize-13943
Browse files Browse the repository at this point in the history
Translate ch01-03-hello-cargo.md via GitLocalize
  • Loading branch information
ava57r authored Nov 5, 2020
2 parents 5a3fbaf + f7f5ff6 commit a8f3487
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions rustbook-ru/src/ch01-03-hello-cargo.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ Cargo является системой сборки и менеджером п

Простейшие Rust программы, вроде той что мы уже написали, не имеют зависимостей. Если мы собрали “Hello, world!” проект с помощью Cargo, то сборка использовала только часть возможностей Cargo, тех которая делает только сборку кода. По мере того, как вы будете писать более сложные программы на Rust, вы будете добавлять зависимости. А если вы создадите проект с помощью Cargo, то такое добавление будет проще выполнить.

Так как большая часть проектов использует Cargo, то остальная часть книги подразумевает, что вы также используете Cargo. Cargo устанавливается вместе с Rust при использовании официальных установщиков в разделе [“Установка Rust”]<comment>. Если вы установили Rust другим способом, то проверьте есть ли установленный Cargo, введя команду в терминале:</comment>
Так как большая часть проектов использует Cargo, то остальная часть книги подразумевает, что вы также используете Cargo. Cargo устанавливается вместе с Rust при использовании официальных установщиков в разделе [“Установка Rust”]<!--<!-- -->-->. Если вы установили Rust другим способом, то проверьте есть ли установленный Cargo, введя команду в терминале:

```text
```console
$ cargo --version
```

Expand All @@ -16,7 +16,7 @@ $ cargo --version

Давайте создадим новый проект с помощью Cargo и посмотрим, как он отличается от нашего начального проекта “Hello, world!”. Перейдите обратно в папку *projects* (или любую другую, где вы решили сохранять код). Затем в любой операционный системе запустите команду:

```text
```console
$ cargo new hello_cargo
$ cd hello_cargo
```
Expand All @@ -25,7 +25,9 @@ $ cd hello_cargo

Перейдём в каталог *hello_cargo* и посмотрим файлы. Увидим что Cargo сгенерировал два файла и одну директорию: файл *Cargo.toml* и каталог *src* с файлом *main.rs* внутри. Он также создал новый Git репозиторий с файлом *.gitignore*.

> Заметьте: Git является общей системой контроля версий (version control system). Можно изменить `cargo new` на использование другой системы контроля версий или вообще без неё используя флаг `--vcs`. Запустите команду `cargo new --help` чтобы увидеть доступные опции.
Кроме того, cargo инициализировал новый репозиторий Git вместе с файлом *.gitignore*. Файлы Git не будут сгенерированы, если вы запустите `cargo new` в существующем репозитории Git; вы можете изменить это поведение, используя `cargo new --vcs=git` .

> Примечание: Git - это распространённая система контроля версий. Вы можете заставить `cargo new` использовать другую систему контроля версий или вообще отказаться от неё, используя флаг `--vcs`. Запустите `cargo new --help` чтобы увидеть доступные параметры.
Откройте файл *Cargo.toml* в любом текстовом редакторе. Он должен выглядеть как код в листинге 1-2.

Expand All @@ -43,7 +45,7 @@ edition = "2018"

<span class="caption">Листинг 1-2: Содержимое файла <em>Cargo.toml</em> сгенерированное командой <code>cargo new</code></span>

Это файл в формате [*TOML*]<!-- --> (*Tom’s Obvious, Minimal Language*), который является форматом конфигураций Cargo.
Это файл в формате [*TOML*](https://github.com/toml-lang/toml)<!-- --> (*Tom’s Obvious, Minimal Language*), который является форматом конфигураций Cargo.

Первая строка, `[package]`, является заголовочным разделом, который указывает что следующие указания настраивают пакет. По мере добавления больше информации в данный файл, будет добавляться больше разделов.

Expand Down Expand Up @@ -71,15 +73,15 @@ Cargo ожидает, что ваши исходные файлы находят

Посмотрим, в чем разница при сборке и запуске программы “Hello, world!” с помощью Cargo. В каталоге *hello_cargo* соберите проекта следующей командой:

```text
```console
$ cargo build
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 2.85 secs
```

Данная команда создаёт выполняемый файл в папке *target/debug/hello_cargo* (или *target\debug\hello_cargo.exe* на Windows), а не в текущей директории проекта. Можно запустит исполняемый файл командой:

```text
```console
$ ./target/debug/hello_cargo # or .\target\debug\hello_cargo.exe on Windows
Hello, world!
```
Expand All @@ -88,7 +90,7 @@ Hello, world!

Мы только что собрали проект командой `cargo build` и запустили из `./target/debug/hello_cargo`. Но мы также можем использовать команду `cargo run` для компиляции кода и затем запуска исполняемого кода одной командой:

```text
```console
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/hello_cargo`
Expand All @@ -97,7 +99,7 @@ Hello, world!

Заметьте, что в этот раз вы не увидели вывода о том, что Cargo компилировал `hello_cargo`. Cargo понял, что файлы не менялись, поэтому он просто запустил бинарный файл. Если вы модифицировали исходный код, то Cargo соберёт проект заново перед его запуском как вы уже видели в выводе:

```text
```console
$ cargo run
Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.33 secs
Expand All @@ -107,7 +109,7 @@ Hello, world!

Также Cargo предоставляет команду `cargo check`. Данная команда быстро проверяет ваш код, чтобы убедится что он компилируется, но не создаёт выполняемого файла:

```text
```console
$ cargo check
Checking hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
Expand All @@ -117,9 +119,10 @@ $ cargo check

Повторим полученные знания про Cargo:

- Можно собирать проект используя команды `cargo build` или `cargo check`.
- Можно собирать проект используя команду `cargo build`.
- Можно одновременно собирать и запускать проект одной командой, используя `cargo run`.
- Cargo не сохраняет результаты сборки в директорию с исходным кодом, а сохраняет их в отдельный каталог *target/debug*.
- Мы можем собрать для проверки ошибок с помощью `cargo check`, не тратя время на кодогенерацию.
- Cargo сохраняет результаты сборки не в директорию с исходным кодом, а в отдельный каталог *target/debug*.

Дополнительным преимуществом использования Cargo является то, что его команды одинаковые не зависимо от операционной системы в которой вы работаете. С этой точки зрения, мы больше не будем предоставлять отдельные инструкции для Linux, macOS или Windows.

Expand All @@ -133,7 +136,7 @@ $ cargo check

Не смотря на то, что проект `hello_cargo` простой, теперь он использует большую часть реального инструментария, который вы будете использовать остальную часть вашей Rust карьеры. В реальности, чтобы работать над любыми существующими проектами, можно использовать следующие команды для получения кода с помощью Git, перехода в проектный каталог и сборку:

```text
```console
$ git clone someurl.com/someproject
$ cd someproject
$ cargo build
Expand All @@ -154,6 +157,5 @@ $ cargo build
Пришло время для создания более содержательной программы, чтобы привыкнуть к чтению и написанию кода на Rust. В главе 2 мы создадим программу для угадывания числа. Если вы хотите начать с изучения общих концепций программирования в Rust, загляните в главу 3, а затем вернитесь к главе 2.


[*TOML*]: https://github.com/toml-lang/toml
[его документацию]: https://doc.rust-lang.org/cargo/
[“Установка Rust”]: ch01-01-installation.html#installation
[“Установка Rust”]: ch01-01-installation.html#installation

0 comments on commit a8f3487

Please sign in to comment.