Rust (язык программирования): различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Строка 257:
В более ранних версиях языка поддерживались легковесные потоки, но потом от них отказались в пользу нативных [[Поток выполнения|потоков]] операционной системы. При этом рекомендуемым методом обмена данными между потоками является отправка сообщений, а не использование общей памяти. Для достижения высокой производительности возможно отправлять данные не через копирование, а используя собственные указатели (<code>Box<T></code>). Они гарантируют только одного владельца.
 
Определение и вызов [[Асинхронный ввод-вывод|асинхронных]] операций поддерживаются на уровне синтаксиса языка: ключевое слово <code>async</code> определяет асинхронную функцию или блок; обычный вызов такой функции возвращает объект с типажом <code>Future</code> — дескриптор [[Ленивые вычисления|ленивой]] асинхронной операции<ref>{{cite web|author=Niko Matsakis|title=Async-await on stable Rust!|url=https://blog.rust-lang.org/2019/11/07/Async-await-stable.html|date=2019-11-07|accessdate=2020-06-06|lang=en}}</ref>. Вызов <code>.await</code> позволятпозволяет одной асинхронной операции ждать, пока завершится другая асинхронная операция. При этом реализация [[среда выполнения|среды исполнения асинхронных операций]] не входит ни в ядро языка, ни в стандартную библиотеку, а предоставляется сторонними библиотеками<ref>{{cite web|title=tokio::runtime|url=https://docs.rs/tokio/0.2.21/tokio/runtime/index.html|date=2020-05-13|accessdate=2020-06-06|lang=en}}</ref>.
 
== Другие особенности ==