Rust
Семантик мультипарадигмальный: параллельное, функциона
а льное, императивное, структурное
программирование
Тип компилируемый
исполнени
я
Появился 7 июля 2010[11]
в
ие файлов
Основные rustc
реализаци
и
Испытал Alef[d][12], C++, C#, Cyclone, Erlang, Haskell, Limbo, N
влияние ewsqueak[d], OCaml, Scheme, SML и Swift
Сайт rust-lang.org (англ.)
ОС кроссплатформенность
Медиафайлы на Викискладе
Rust (англ. rust — ржавчина, [rʌst]) — мультипарадигмальный компилируемый язык
программирования общего назначения,
сочетает парадигмы функционального и процедурного программирования с
объектной системой, основанной на типажах. Управление памятью
осуществляется через механизм «владения» с использованием аффинных типов[en]
[14]
, что позволяет обходиться без системы сборки мусора во время исполнения
программы. Rust гарантирует безопасную работу с памятью благодаря
встроенной в компилятор системе статической валидации ссылок (borrow checker).
Имеются средства, позволяющие использовать приёмы объектно-
ориентированного программирования[15].
После нескольких лет активной разработки первая стабильная версия (1.0) вышла
15 мая 2015 года, после чего новые версии выходят раз в 6 недель[17]. Для версий
языка, вышедших после 1.0, заявлена обратная совместимость[18].
С 2016 по 2020 год Rust занимает первое место в списке любимых языков («Most
loved programming languages») по версии ежегодного опроса разработчиков Stack
Overflow Developer Survey[22][23].
Содержание
1История
2Система типов
3Управление памятью
4Синтаксис
o 4.1Связывание имён
o 4.2Сопоставление с образцом (match)
o 4.3unsafe
5Объектная система
6Параллельные вычисления
7Другие особенности
8Пример
9Сравнение с другими языками
10Примечания
11Литература
12Ссылки
История[править | править код]
Работа над языком была начата сотрудником Mozilla Грэйдоном Хором в 2006
году. Автор дал проекту название Rust, по его словам связанное с грибами
семейства ржавчинные (англ. rust fungi)[24].
пустой кортеж () ;
пустой массив (напр. [u8; 0] );
структура без полей (напр. struct Foo );
структура с единичными типами ( struct
Foo([u8; 0], ()) ).
Реализованы пустые типы[en] данных — типы, экземпляры которых не могут быть
созданы; реализованы в виде перечисляемых типов, не имеющих вариантов: enum
Void {} .
Все типы данных в языке делятся на две основные группы: простые и типы
стандартной библиотеки.
Числовые типы:
Структуры (struct):
Коллекции:
Константы:
При выборе следует отдавать предпочтение const , так как зачастую для
константы не нужен конкретный адрес в памяти и const позволяет делать
оптимизации вроде Свёртки констант.
Примеры:
*w = 90 // y = 90
*z = 30 // ошибка: попытка изменения через ссылку на неизменяемое
связывание
Синтаксис[править | править код]
Синтаксис языка похож на Си и C++; язык регистро-зависимый, блоки кода
ограничиваются фигурными скобками; используются стандартные наименования
управляющих конструкций if, else, while, и for; комментарии также пишутся в С-
формате; имена модулей разделяются двумя символами двоеточия ( :: ).
Идентификаторы могут содержать латинские буквы, цифры и знак подчёркивания.
В строковых литералах допускается использование любых символов unicode в
кодировке UTF-8.
Набор операторов в Rust: арифметические ( * — умножение, / — деление, % —
взятие остатка от деления, + — сложение, - — вычитание и унарный префиксный
оператор - для смены знака числа), битовые ( >> , << , & , | и ^ ), операторы
сравнения ( == , != , < , > , <= , >= ), логические ( && и || ). Для приведения типов в
Rust используется бинарный оператор as . Неявное приведение типов происходит
в очень небольшом наборе ситуаций[32].
let x: i32 = 5;
match x {
1 | 2 => println!("один или два"),
3 => println!("три"),
_ => println!("что угодно"),
}
unsafe[править | править код]
В блоках и функциях, помеченных unsafe (англ. unsafe — небезопасный),
компилятор разрешает делать лишь пять дополнительных вещей:
читать и обновлять
изменяемые статические ( static mut )
переменные;
разыменовывать сырые указатели;
вызывать небезопасные ( unsafe ) функции;
реализовывать небезопасные типажи;
Получать доступ к полям union .
Пример[править | править код]
Hello, world!:
fn main() {
println!("Hello, world!");
}
Примечания[править | править код]
↑ Показывать компактно
1. ↑ Перейти обратно:1 2 3 4 https://prev.rust-lang.org/id-ID/faq.html
2. ↑ Перейти обратно:1 2 https://jaxenter.com/mozillas-graydon-hoare-
working-on-rust-102672.html
3. ↑ Перейти обратно:1 2 https://foundation.rust-lang.org/posts/2021-
02-08-hello-world/
4. ↑ Announcing Rust 1.52.1
5. ↑ Release 1.52.1 — 2021.
6. ↑ https://ziglang.org
7. ↑ Язык программирования Zig / Хабр
8. ↑ [1710.07047] Safe Pointers in SPARK 2014
9. ↑ Microsoft opens up Rust-inspired Project Verona
programming language on GitHub. — «Microsoft recently
created a stir after revealing it was taking some ideas from the
popular Rust programming language to create a new
language for 'safe infrastructure programming' under the
banner Project Verona.». Дата обращения: 17 января 2020.
10. ↑ Microsoft создаёт новый язык программирования,
основанный на Rust / Хабр
11. ↑ Hoare G. https://mail.mozilla.org/pipermail/rust-dev/2010-
July/000001.html (англ.) — 2010.
12. ↑ Appendix: Influences - The Rust Reference
13. ↑ Перейти обратно:1 2 https://github.com/rust-
lang/rust/blob/master/COPYRIGHT
14. ↑ Перейти обратно:1 2 Levy, Amit. The Case for Writing a Kernel in
Rust : [англ.] / Amit Levy, Bradford Campbell,
Branden Ghena … [et al.]// Proceedings of the 8th Asia-
Pacific Workshop on Systems. — N. Y. : ACM, 2017. — P. 1—
7. — (APSys '17). — ISBN 978-1-4503-5197-
3. — doi:10.1145/3124680.3124717.
15. ↑ Frequently Asked Questions // Design
Patterns (англ.) (недоступная ссылка). архивный сайт Rust. —
FAQ о языке Rust. — «Many things you can do in OO
languages you can do in Rust, but not everything, and not
always using the same abstraction you’re accustomed to. […]
There are ways of translating object-oriented concepts like
multiple inheritance to Rust, but as Rust is not object-oriented
the result of the translation may look substantially different
from its appearance in an OO language.». Дата обращения: 25
мая 2020. Архивировано 29 января 2018 года.
16. ↑ Ivo Balbaert. Rust Essentials. — Packt Publishing, May
2015. — ISBN 978-1-78528-576-9.
17. ↑ The Rust Core Team. Announcing Rust 1.0 (англ.). The Rust
Programming Language Blog (15 May 2015). Дата обращения:
18 августа 2015.
18. ↑ Road to Rust 1.0 - The Rust Programming Language Blog.
blog.rust-lang.org. Дата обращения: 11 января 2017.
19. ↑ Анонсировано создание независимой от Mozilla
организации Rust Foundation (рус.).
20. ↑ Rust Foundation (англ.). foundation.rust-lang.org. Дата
обращения: 18 февраля 2021.
21. ↑ Daniel Nazer. Mozilla Welcomes the Rust
Foundation (англ.). The Mozilla Blog. Дата обращения: 18
февраля 2021.
22. ↑ Stack Overflow Developer Survey 2019 (англ.). Stack
Overflow. — «For the fourth year in a row, Rust is the most
loved programming language among our respondents». Дата
обращения: 4 сентября 2019.
23. ↑ Stack Overflow Developer Survey 2020
24. ↑ Frequently Asked Questions // Why is the language called
Rust? (англ.). — Историческая версия официального FAQ о
языке Rust по состоянию на ноябрь 2015 года; в более
поздних версиях текста раздел об истории именования
языка исчез. — «As stated by Graydon Hoare, original
developer of the Rust language, the name "Rust" comes from
his personal interest in fungi, and because it evoked the
feeling he was looking for in a programming language
name.». Дата обращения: 1 декабря 2016.
25. ↑ Project FAQ (англ.). Официальный сайт Rust (2014). Дата
обращения: 17 апреля 2012.
26. ↑ Brendan Eich. Future Tense (англ.) (недоступная ссылка)
(29 April 2011). — «At Mozilla Summit 2010, we launched
Rust, a new programming language motivated by safety and
concurrency for parallel hardware, the “manycore” future
which is upon us.». Дата обращения: 17 апреля
2012. Архивировано 18 сентября 2012 года.
27. ↑ Graydon Hoare. Rust Progress (англ.) (недоступная ссылка)
(2 October 2010). Дата обращения: 17 апреля
2012. Архивировано18 сентября 2012 года.
28. ↑ Graydon Hoare. [rust-dev] stage1/rustc
builds (англ.) (20 April 2011). — «After that last change fixing
the logging scope context bug, looks like stage1/rustc builds.
Just shy of midnight :)». Дата обращения: 17 апреля 2012.
29. ↑ Brian Anderson. The Rust compiler 0.1 is unleashed (англ.).
Списки рассылки Mozilla (20 January 2012). Дата обращения:
22 сентября 2014.
30. ↑ Brendan Eich. Mozilla and Samsung Collaborate on Next
Generation Web Browser Engine (англ.). Официальный
блог Mozilla (3 April 2013). Дата обращения: 22 сентября 2014.
31. ↑ Announcing Rust 1.0.
32. ↑ В частности, поддерживается неявное приведение
ссылки к указателю; изменяемой ссылки (указателя) к
неизменяемой ссылке (указателю); объекта
определённого типа к объекту с типажом, реализованным
этим типом. Отсутствует неявное приведение чисел или
строк к булевому значению.
33. ↑ Procedural Macros - The Rust Reference. doc.rust-
lang.org. Дата обращения: 19 августа 2020.
34. ↑ Михаил Панков. Есть ли ООП в
Rust?. rustycrate.ru(11 июня 2017). Дата обращения: 6 июня
2020.
35. ↑ Niko Matsakis. Async-await on stable Rust! (англ.)
(7 November 2019). Дата обращения: 6 июня 2020.
36. ↑ tokio::runtime (англ.) (13 May 2020). Дата обращения: 6 июня
2020.
37. ↑ Naming (англ.) (недоступная ссылка). Rust API
Guidelines. Дата обращения: 16 октября
2018. Архивировано 16 сентября 2018 года.
Литература[править | править код]
Блэнди Дж., Орендорф Дж. Программирование
на языке Rust = Programming Rust. — ДМК Пресс,
2018. — 550 с. — ISBN 978-5-97060-236-2.
o Оригинал: Jim Blandy, Jason
Orendorff. Programming Rust. — O'Reilly
Media, March 2016. — ISBN 978-1-4919-
2721-2.
Ivo Balbaert. Rust Essentials. — Packt Publishing,
May 2015. — ISBN 978-1-78528-576-9.
Ссылки[править | править код]
rust-lang.org — официальный сайт языка
программирования Rust
Центральный репозиторий библиотек,
написанных на Rust
Ржавый ящик — русскоязычный сайт о языке
программирования Rust
Rust Rosetta — реализации различных задач
программирования
Язык программирования Rust (оригинал: The Rust
Programming Language).
Rust на примерах (оригинал: Rust by Example).
[показать]
Проекты Mozilla
Категории:
Языки программирования по алфавиту
Языки программирования, появившиеся в 2010 году
Проекты Mozilla
Rust (язык программирования)
Функциональные языки программирования
Процедурные языки программирования
Многопоточные языки программирования
Навигация
Вы не представились системе
Обсуждение
Вклад
Создать учётную запись
Войти
Статья
Обсуждение
Читать
Править
Править код
История
Поиск
????? ???????
Заглавная страница
Рубрикация
Указатель А — Я
Избранные статьи
Случайная страница
Текущие события
Участие
Сообщить об ошибке
Сообщество
Форум
Свежие правки
Новые страницы
Справка
Пожертвовать
Инструменты
Ссылки сюда
Связанные правки
Служебные страницы
Постоянная ссылка
Сведения о странице
Цитировать страницу
Печать/экспорт
Создать книгу
Скачать как PDF
Версия для печати
В других проектах
Викисклад
Викиновости
Элемент Викиданных
На других языках
العربية
English
Español
Bahasa Indonesia
Bahasa Melayu
Português
Română
Українська
中文
Ещё 27
Править ссылки
Эта страница в последний раз была отредактирована 19 апреля 2021 в 05:14.
Текст доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать
дополнительные условия. Подробнее см. Условия использования.
Wikipedia® — зарегистрированный товарный знак некоммерческой организации Wikimedia Foundation, Inc.
Политика конфиденциальности
Описание Википедии
Отказ от ответственности
Свяжитесь с нами
Мобильная версия
Разработчики
Статистика
Заявление о куки