The OpenNET Project / Index page

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



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

Оглавление

Релиз языка программирования Rust 1.27, opennews (??), 22-Июн-18, (0) [смотреть все]

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


17. "Релиз языка программирования Rust 1.27"  +/
Сообщение от Аноним (17), 22-Июн-18, 15:20 
> использование "#[must_use]" помогает выявить такие ошибки, как выполнение функции без присвоения результата;

Поясните, кто знает. Раньше НЕ использование результата не void ф-и не считалось ошибкой в расте?

Странно как-то. Было ощущение, что такие вещи там изначально должны были обрабатываться с предупреждением, если вообще допускаться.

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

19. "Релиз языка программирования Rust 1.27"  +/
Сообщение от Vkni (ok), 22-Июн-18, 15:28 
> Странно как-то. Было ощущение, что такие вещи там изначально должны были обрабатываться
> с предупреждением, если вообще допускаться.

Зависит от ситуации.

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

35. "Релиз языка программирования Rust 1.27"  +/
Сообщение от Orduemail (ok), 22-Июн-18, 17:14 
> Раньше НЕ использование результата не void ф-и не считалось ошибкой в расте?

Не считалось. Были специальные типы (например, Result) неиспользование которого считается ошибкой, но вот так, чтобы для -- нет.

> такие вещи там изначально должны были обрабатываться с предупреждением, если вообще допускаться.

Почему же? Rust -- не функциональный язык, во всяком случае не чисто функциональный. Side-эффекты там используются во все поля и, соответственно, вызов функции ради её side-эффектов -- это нормальная ситуация для него. Если чисто для примера, то можно придумать функцию replace, которая меняет в строке 'a' на 'b', и возвращает количество произведённых замен. Если мне надо просто поменять, но количество не важно, то зачем я буду городить какой-то огород вокруг возвращаемого значения, убеждая компилятор, что оно используется?

В новости приведены примеры, когда это полезно -- replace (который создаёт копию строки), clone (создающий копию объекта), collect (собирающий все элементы из итератора в массив), to_owned (которая берёт слайс &str, создаёт его копию в куче и возвращает "умный указатель" на него, типа String) -- это всё примеры функций _без_ side-эффектов, где действительно нет никакого смысла вызывать функцию, игнорируя результат.

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

60. "Релиз языка программирования Rust 1.27"  +/
Сообщение от Аноним (59), 22-Июн-18, 22:02 
Точка с запятой в расте является аналогом "|> ignore" в ML языках.
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

66. "Релиз языка программирования Rust 1.27"  +/
Сообщение от Vkni (ok), 23-Июн-18, 03:44 
> Точка с запятой в расте является аналогом "|> ignore" в ML языках.

Кстати, в ML языках тоже есть точка с запятой. Даже в Х-ле (в линейном синтаксисе):

do { putStr "Hello "; putStrLn "World!" }

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

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

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




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

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