# Rust (Русский)

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

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki
Состояние перевода: На этой странице представлен перевод статьи 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. Также вы можете поставить cargo.

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

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

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

Есть два способа установки 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. По умолчанию будет установлена стабильная версия для вашей архитектуры.

Note: Добавьте $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 вручную или из binfmt-wineAUR.
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, можно установить с помощью пакета cargo. Nightly доступен в AUR: cargo-nightly-binAUR. Если у вас rustup, то он уже содержит в себе cargo.

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

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

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

    $ cargo new hello_world --bin

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

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

    Cargo.toml

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

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

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

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

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

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

Categories:

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