The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Rust 1.67, opennews (??), 26-Янв-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


134. "Выпуск языка программирования Rust 1.67"  +1 +/
Сообщение от freecoder (ok), 27-Янв-23, 11:31 
Атрибут must_use стабильный, вы дали ссылку на функцию hint::must_use, которая не стабильна, а не на атрибут.

Почему возникла необходимость дорабатывать поведение этого атрибута для асинхронных функций? Дело в том, что сигнатура async-функции


async fn foo() -> Bar
Это синтаксический сахар для сигнатуры примерно такого вида:

fn foo() -> impl Future<Output = Bar>

Если на такую функцию повесить атрибут must_use

#[must_use]
fn foo() -> impl Future<Output = Bar>
то получится, что он применяется к возвращаемому типу impl Future, который и так всегда must use. На самом деле, в рамках синтаксиса async-функции, программист ожидает, что must_use применится к значению типа Bar, которое возвращает не функция, а футура, которую вернет функция:

#[must_use]
async fn foo() -> Bar
Понятно, что с точки зрения внутреннего представления это особый случай поведения #[must_use], который отличен от предыдущего, применимого для объявлений типов и значений, возвращаемых из функций напрямую.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

147. "Выпуск языка программирования Rust 1.67"  +/
Сообщение от Серб (ok), 27-Янв-23, 12:58 
Получается, что синтаксический сахар, скрывающий суть, был проблемой?
Ответить | Правка | Наверх | Cообщить модератору

151. "Выпуск языка программирования Rust 1.67"  +/
Сообщение от freecoder (ok), 27-Янв-23, 13:27 
Не то что бы проблемой, просто он расширил применимость синтаксиса объявления функции. Сделав возврат значения футуры синтаксически подобным возвращаемому значению функции, естественно возникла потребность применять все, что положено возвращаемым из функции значениям также и к возвращаемым из футуры, если они записаны в синтаксисе функций.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру