The OpenNET Project / Index page

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



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

Оглавление

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

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


11. "Выпуск языка программирования Rust 1.67"  +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Янв-23, 22:26 
> Для функций async с Future::Output реализована возможность указания аннотаций "#[must_use]"

Почему для async функций указание аннтоации это отдельный случай? Да в сама аннотация помечена как "This is a nightly-only experimental API." https://doc.rust-lang.org/std/hint/fn.must_use.html , а вот в С++ [[nodiscard]] в 17-ом стандарте и до этого можно было использовать через кастомные атрибуты. И это вы называете стабильным языком? Рановато еще.

Ответить | Правка | Наверх | Cообщить модератору

42. "Выпуск языка программирования Rust 1.67"  +/
Сообщение от Аноним (42), 26-Янв-23, 23:18 
У многих и стабильных языков 28 летней давности, даже такого нет
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск языка программирования Rust 1.67"  –2 +/
Сообщение от Вы забыли заполнить поле Name (?), 26-Янв-23, 23:20 
> У многих и стабильных языков 28 летней давности, даже такого нет

Ну раст не позиционирует себя как какие-то многие языки. Он лучший, самый безопасный, замена дырявой сишки. Или не так?

Ответить | Правка | Наверх | Cообщить модератору

51. "Выпуск языка программирования Rust 1.67"  +3 +/
Сообщение от НяшМяш (ok), 27-Янв-23, 00:06 
В оригинальной новости расписано подробнее. Async функция возвращает Future и аннотация must_use применялась только к этой структуре, а не к её ожидаемому результату. Теперь это починили и аннотация распространяется в том числе и на Future::Output.
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

61. "Выпуск языка программирования Rust 1.67"  +1 +/
Сообщение от Аноним (61), 27-Янв-23, 00:27 
Ну так в плюсах больше 30 лет ждали этой фичи, а тут уже она есть!
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

85. "Выпуск языка программирования Rust 1.67"  +/
Сообщение от burjui (ok), 27-Янв-23, 02:07 
Сдаётся мне, 30 лет назад плюсовики даже не знали о такой фиче и полагались на своё идеальное, по мнению экспертов с Опеннета, внимание к деталям. Потом увидели её в каком-то другом языке, поняли, что годно, и потянули себе.
Ответить | Правка | Наверх | Cообщить модератору

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
Добавить, Поддержать, Вебмастеру