# Rust (Русский)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи Rust. Дата последней синхронизации: 4 декабря 2016. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Википедия:

  Rust — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla Research, поддерживающий функциональное программирование, модель акторов и процедурное программирование.
  Внимание языка сосредоточено на трёх задачах: безопасность, скорость и параллелизм. Он сопоставим по скорости и возможностям с C++, однако, даёт большую безопасность при работе с памятью, что обеспечивается механизмами ограничения.

## Rust Core Library

Эта статья или раздел нуждается в переводе

Примечания: translateme (обсуждение: Talk:Rust (Русский)#)

Rust Core Library — свободная от зависимостей основа стандартной библиотеки Rust. It interfaces directly with LLVM primitives, which allows Rust to be platform and hardware-agnostic. It is this integration with LLVM allows Rust to obtain greater performance than equivalent C applications compiled with Clang, making Rust software designed with libcore lower level than C. Developers looking to target software for embedded platforms may forego the standard library with `#[nostd]` to exclusively use the no-batteries-included core library for smaller binary sizes and improved performance. However, using `#[nostd]` limits the amount of software support that you can get from the larger Rust community as a majority of libraries require the standard library.

## Стандартная библиотека Rust

Стандартная библиотека Rust предоставляет удобные абстракции высокого уровня, с помощью которых создаётся большинство переносимых программ на Rust. Например, она содержит типы `Vec`, `Iterator`, `Option`, `Result` и `String`; огромное число методов для примитивов языка; много стандартных макросов; поддержка ввода-вывода и многопоточности; использование кучи (heap) с помощью `Box`; и многие другие высокоуровневые возможности, не доступные в libcore.

## Цикл выпуска

Rust следует шестинедельному циклу выпуска, похожему на цикл выпуска Firefox. С каждым новым выпуском ядро и стандартные библиотеки улучшаются для поддержки большего числа платформ, повышения производительности и стабилизации новых возможностей для использования со стабильной версией Rust.

## Установка

### Из репозитория

Для установки последней стабильной версии Rust из официальных репозиториев Arch Linux, установите пакет rust. Он установит компилятор rustc.

### С помощью Rustup

Официальный и рекомендумемый способ установки Rust для разработки ПО — с помощью инструмента Rustup, написанного на Rust.

Преимуществом использования Rustup вместо обычной устаноки Rust из репозитория является возможность установки нескольких toolchains (stable, beta, nightly) для нескольких целевых платформ (windows, mac, android) и архитектур (x86, x86_64, arm).

Есть два способа установки rustup: официально поддерживаемый разработчиками Rust и поддерживаемый Arch Linux.

1. Скачайте скрипт установки с помощью `curl -f https://sh.rustup.rs > rust.sh`, просмотрите его: `vim ./rust.sh` и запустите: `./rust.sh` для установки. Для обновления rustup в будущем запускайте `rustup self update`.
2. Также пакет rustup доступен в официальных репозиториях Arch Linux. Обратите внимание, что при установке с помощью этого пакета обновление с помощью `rustup self update` работать не будет, и для обновления rustup следует обновлять этот пакет с помощью pacman.

Теперь нужно установить сам Rust. По умолчанию будет установлена стабильная версия для вашей архитектуры.

Примечание: Добавьте $HOME/.cargo/bin в переменную окружения PATH перед выполнением команды rustup.

    $ rustup default stable

Проверим версию Rust с помощью `rustc -V` :

    $ rustc -V

    rustc 1.13.0 (2c6933acc 2016-11-07)

Если вы хотите использовать nightly, выполните:

    $ rustup install nightly
    $ rustup default nightly

    $ rustc -V

    rustc 1.15.0-nightly (c80c31a50 2016-12-02)

### Проверка после установки

Давайте убедимся, что Rust установился корректно, написав простую программу:

    ~/hello.rs

     fn main() {
         println!("Hello, World!");
     }

Затем скомпилируйте её с помощью `rustc`, введя это:

    $ rustc hello.rs && ./hello

    Hello, World!

## Кросс-компиляция

### С помощью rustup

Использовать кросс-компиляцию с rustup очень легко. Он поддерживает очень много целевых платформ. Полный их список можно увидеть с помощью команды `rustup target list`.

Например, если вы хотите использовать stable Rust для Windows с компилятором GNU, сделайте следующее:

    $ rustup install stable-x86_64-pc-windows-gnu

Эта команда установит только rust и инструменты для вашей целевой платформы, и для кросс-компиляции нужно сделать ещё несколько вещей.

### Windows

В этом разделе `$ARCH` будет целевой архитектурой (`x86_64` или `i686`).

1. Установите mingw-w64-gcc и wine
2. Добавьте определение binfmt для исполняемых файлов Windows вручную.
3. Если вы используете rustup, достаточно просто выполнить команды `rustup install stable-$ARCH-pc-windows-gnu` и `rustup target add $ARCH-pc-windows-gnu` для установки Rust и стандартной библиотеки для вашей архитектуры. Если вы не используете rustup, поставьте стандартную библиотеку Rust для Windows в вашем каталоге rustlib (`/usr/local/lib/rustlib` если у вас rust-nightly-binAUR или `/usr/lib/rustlib` если вы используете пакет rust). Простейший путь для этого — скачать установщик Rust под Windows для нужной вам архитектуры, установить с помощью Wine (`wine start my-rust-installer.msi`) и скопировать `$INSTALL_DIR/lib/rustlib/$ARCH-pc-windows-gnu` в ваш каталог rustlib.
4. Подскажите cargo, где искать MinGW-w64 gcc/ar добавлением следующих параметров в `~/.cargo/config` (создайте файл, если он отсутствует):

    ~/.cargo/config

    [target.$ARCH-pc-windows-gnu]
    linker = "/usr/bin/$ARCH-w64-mingw32-gcc"
    ar = "/usr/$ARCH-w64-mingw32/bin/ar"

Теперь вы можете выполнять кросс-компиляцию для Windows, указывая дополнительный аргумент `--target $ARCH-pc-windows-gnu` при вызове cargo:

    $ # Сборка
    $ cargo build --release --target "$ARCH-pc-windows-gnu"
    $ # Запуск unit-тестов через wine
    $ cargo test --target "$ARCH-pc-windows-gnu"

### Неофициальные пакеты

Неофициальный репозиторий archlinuxcn содержит rust-nightly и стандартную библиотеку Rust для i686, ARM, ARMv7, Windows 32 и 64, и вы можете просто установить то, что вам нужно, и использовать кросс-компиляцию. Тем не менее вам нужно найти ARM toolchain самостоятельно. Для Windows 32bit вам нужно получить libgcc_s_dw2-1.dll для сборки и запуска.

## Cargo

Cargo система сборки и менеджер пакетов для Rust, можно установить с помощью пакета rust. Nightly доступен в AUR: cargo-nightly-binAUR. Если у вас rustup, то он уже содержит в себе cargo.

Cargo помогает работать с зависимостями вашего проекта, скачивая их из своего хранилища или стороннего Git репозитория. Также он позволяет убедиться, что вы всегда будете получать повторяемые сборки. Рекомендуем прочитать официальное руководство.

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

Для создания нового проекта с помощью Cargo:

    $ cargo new hello_world --bin

Эта команда создаст директорию с файлом `Cargo.toml` по умолчанию и настроит сборку в исполняемый файл (потому что мы добавили `--bin`; иначе будет собираться библиотека).

Примечание: Cargo использует файл манифеста `Cargo.toml`, который содержит метаданные, необходимые Cargo для сборки вашего проекта.

    Cargo.toml

    [package]
    name = "hello_world"
    version = "0.1.0"
    authors = ["Ваше Имя <you@example.com>"]

## Поддержка в IDE

### Инструменты

#### Racer

Движок автозаполнения Racer является лучшим способом получения поддержки автозаполнения на данный момент, однако для этого требуется также установить копию исходного кода Rust, которую вы можете получить одним из нескольких способов:

- С помощью rustup: `rustup component add rust-src`
- Из AUR: rust-src-gitAUR или rust-nightly-srcAUR, в этом случае вы должны установить переменную окружения `RUST_SRC_PATH`.

После установки исходного кода вы можете использовать `Cargo` для установки racer или получить его из репозиториев (rust-racer).

    $ cargo install racer

#### Clippy

Clippy использует поддержку плагинов компилятора в Nightly-сборках Rust, чтобы обеспечить большое количество дополнительных проверок для обнаружения и предупреждения о более широком разнообразии ошибок и неидиоматическом Rust. Поскольку для работы требуется поддержка плагинов компилятора, clippy не будет работать при компиляции с помощью стабильной версии компилятора Rust.

    $ cargo +nightly install clippy

### Редакторы

#### Atom

Atom поддерживает программирование на Rust, когда установлены оба следующих модуля: language-rust и linter-rust.

#### IntelliJ IDEA

В IntelliJ IDEA имеется Rust plugin. Этот плагин также работает с CLion. При настройке toolchain используйте rustup для загрузки исходников (`rustup component add rust-src`), а затем выберите `~/.rustup/toolchains/<your toolchain>/bin` в качестве расположения toolchain.

#### Visual Studio Code

В Visual Studio Code поддержка Rust может быть получена через официальное kalitaalexey.vscode-rust[устаревшая ссылка 2020-08-04] дополнение.

#### Vim

В Vim поддержка Rust может быть получена через официальный rust.vim плагин.

#### Emacs

В Emacs поддержка Rust может быть получена через официальный rust-mode плагин.

#### Kate

В Kate поддержка Rust может быть получена через официальный kate плагин. Он устанавливается по-умолчанию пакетом kate, требует установки racerAUR и ручной активации.

## Смотрите также

- Официальный сайт языка программирования Rust (англ.)
- Документация Rust (англ.)
- Официальная Книга (англ.)
- Перевод Книги на русский язык
- Обзор API стандартной библиотеки (англ.)
- Rust на примерах (англ.)
- Rust на примерах (частичный перевод на русский язык)
- Подборка материалов по изучению Rust
- Библиотеки (крейты, crates), доступные через Cargo[устаревшая ссылка 2020-08-04]
- Новостная рассылка This Week in Rust (англ.)
- Блог языка программирования Rust (англ.)
- Форум пользователей Rust (англ.)
- The Rust Internals Forum (англ.)
- Список библиотек и ресурсов Awesome Rust: A curated list of Rust libraries and resources (англ.)
- Статья в Википедии
- Русскоязычный сайт о Rust
- Русскоязычный форум

Category:

- Programming languages (Русский)

Hidden category:

- Pages or sections flagged with Template:Translateme (Русский)