The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Rust 1.67"
Отправлено freecoder, 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], который отличен от предыдущего, применимого для объявлений типов и значений, возвращаемых из функций напрямую.
 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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