Описание тега rust
Rust - это язык системного программирования, ориентированный на три цели: безопасность, скорость и параллелизм. Он поддерживает эти цели без использования сборщика мусора, что делает его полезным языком для ряда случаев использования, в которых другие языки не подходят: встраивание в другие языки, программы с определенными требованиями к пространству и времени и написание низкоуровневого кода, например, драйверы устройств и операционные системы.
Он улучшает текущие языки, нацеленные на это пространство, за счет наличия ряда проверок безопасности во время компиляции, которые не производят накладных расходов во время выполнения, при этом устраняются все гонки данных. Rust также стремится к достижению "абстракций с нулевой стоимостью", даже если некоторые из этих абстракций ощущаются как абстракции языка высокого уровня. Даже тогда Rust по-прежнему позволяет точно управлять, как это сделал бы язык низкого уровня.
Попробуйте Rust онлайн на игровой площадке Rust
Rust Playground - это онлайн-приложение, которое позволяет вам экспериментировать с Rust, редактируя и запуская код Rust прямо в браузере; не нужно устанавливать Rust локально! На игровой площадке доступно несколько ящиков (многоразовые библиотеки Rust), чтобы продемонстрировать часть экосистемы Rust.
Версия
После долгого периода итераций и экспериментов, Rust 1.0 был выпущен 15 мая 2015 года. Этот выпуск является официальным началом приверженности языка Rust стабильности, и как таковой он предлагает прочную основу для создания приложений и библиотек. С этого момента критические изменения в основном выходят за рамки (применяются некоторые незначительные предостережения, такие как ошибки компилятора).
Rust использует три канала выпуска: стабильный, бета-версия и ночной. Каждые шесть недель бета-канал выпускается как стабильная версия, а текущий ночной канал становится бета-кандидатом.
Издание
Несмотря на то, что Rust стремится к стабильности, редакции используются для внесения изменений, которые могут нарушить работу (например, новое ключевое слово). Каждая версия компилятора поддерживает все выпуски, представленные до его выпуска. Вы просто помечаете свой ящик редакцией, на которую хотите настроить таргетинг, и получаете возможность этой редакции.
На данный момент существует два выпуска: 2015 и 2018. Узнайте больше в Руководстве по выпуску.
Что оно делает?
Rust поддерживает смесь стилей программирования: императивного процедурного, параллельного актора, объектно-ориентированного и функционального. Он поддерживает универсальное программирование и метапрограммирование как в статическом, так и в динамическом стилях. Rust также может создавать привязки для интерфейсов внешних функций C.
Дизайн языка преследует следующие цели:
- Обнаружение и предотвращение ошибок во время компиляции.
- Четкость и точность выражения.
- Эффективность выполнения.
- Абстракции высокого уровня с нулевой стоимостью.
- Безопасный параллелизм.
Стандартная библиотека
Вы можете просмотреть, что предлагает стандартная библиотека, и выполнить поиск здесь. Объем стандартной библиотеки будет продолжать расти в будущих версиях языка.
Начиная
Чтобы начать работу с языком:
- Начни с книги.
- Откройте документацию стандартной библиотеки.
- Прочтите Rust by Example.
- Когда вы будете готовы к самым глубоким и темным искусствам Rust, погрузитесь в The Rustonomicon.
Чтобы помочь вашей памяти, есть шпаргалка со ссылками на эти книги.
Вы можете найти гораздо больше учебные ресурсы (в том числе не-английском) в rust-learning
хранилище или в rust-unofficial
репозиторий.
Получать помощь
Не все вопросы подходят для stackru и уж точно не подходят для обсуждения. Если вы хотите попросить рекомендации по IDE, библиотеке или обсудить лучший способ организовать небольшой фрагмент кода, вы можете рассмотреть альтернативные варианты.
Дополнительные открытые вопросы и обсуждения приветствуются по:
На странице сообщества есть список IRC-каналов Rust, и есть даже языковые каналы, если английский не является вашей сильной стороной.
Кроме того, коллекция веб-сайтов AreWeXYet предоставляет полезные сводки и списки тематических ресурсов:
Создание минимального воспроизводимого примера (MRE) для кода на Rust
Вопросы о переполнении стека, в которых требуется помощь по отладке ("почему этот код не работает?"), Должны включать в себя кратчайший код, необходимый для его воспроизведения, в самом вопросе. Без него вопрос не по теме и скорее всего будет закрыт. Вот несколько общих моментов, которым нужно следовать, чтобы сократить ваш код для создания хорошего MRE:
Попробуйте запустить свой код в другой среде.
- На игровой площадке ржавчины
- В отдельном проекте Cargo
Если ваш код не компилируется, включите копию сообщения об ошибке, желательно полную и неизмененную из вывода компилятора.
Удалить неиспользованные
- ящики
- модули
- типы
- варианты / члены перечисления
- члены структуры
- аргументы функции / возвращаемые значения
Объедините несколько модулей в один файл, переписав
mod foo;
какmod foo { /* contents of foo.rs */ }
Заменить макросом полные или частичные операторы или целые тела функций
unimplemented!()
.Заменить логические значения на жестко запрограммированные
true
илиfalse
ценностиУдалите содержащиеся циклы и условные операторы потока.
Помните, что некоторые шаги могут "разблокировать" другие шаги; попробуйте применять каждый шаг по очереди, пока не останется ни одного шага! Убедитесь, что ваша ошибка повторяется после каждого изменения, чтобы не пойти по неверному пути.
Также есть некоторая информация, которую вы должны предоставить о своем коде:
Предполагается, что вы используете текущую стабильную версию Rust. Если вы не используете эту версию Rust, укажите свою версию. Это можно найти, запустив
rustc --version
.Если вы используете ящики, укажите версии каждого ящика, который вы используете. Его можно найти в вашем файле Cargo.lock.
Книги
Редакторы кода и IDE:
- Atom ( поддержка языка Rust)
- Eclipse ( плагин)
- Emacs ( плагин)
- GNU Emacs ( режим Rust)
- Geany IDE ( поддержка языка Rust из коробки)
- Gnome Builder ( поддержка языка Rust из коробки)
- InteliJ IDEA ( плагин)
- LightTable ( плагин)
- Sublime Text ( пакет Sublime Text для Rust)
- Вим ( Rust.vim)
- Visual Studio Code ( расширение ржавчины, расширение ржавчины с поддержкой Language Server)
- Visual Studio ( расширение Visual Studio для Rust)
Для сравнения возможностей редакторов см. Обзор функций текстового редактора(выделение синтаксиса, фрагменты, завершение кода, линтинг, переход к определению, проверка синтаксиса).