The OpenNET Project / Index page

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



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

Оглавление

Выпуск языка программирования Rust 1.71 , opennews (??), 14-Июл-23, (0) [смотреть все]

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


204. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Аноним (204), 15-Июл-23, 14:50 
>Раст может сравнивать только одинаковый тип данных

Это дефект раста, что маленькие типы не расширяются автоматически до больших при операциях, а константы вообще по-умолчанию не минимального для них типа, что всякие костыли приходится городить.

>Кроме того ненулевой тип удобен при делении.

Нет, не удобен. Деление на ноль - валидная операция, получается nan.

>Кроме того is_positive хорошо вписывается в цепочку вызовов. которая удобна для функционального программирования.

Не удобнее, чем ручное сравнение или лямбда. Не нагляднее.

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

217. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Анонин (?), 15-Июл-23, 19:32 
> маленькие типы не расширяются автоматически до больших при операциях

Это наоборот фича - нет никаких неявных преобразований, которые потом могут отстрелить ногу. Хочешь работать с типами разной размерности - будь добр, сам преобразуй во что нужно.

> что всякие костыли приходится городить.

Под костылями подразумевается просто задать тип при объявлении константы? ничосе костыль однако!

> валидная операция, получается nan.

И что с ним потом делать? А как часто вам нужен nan?
Вот где нужен там просто не используйте NonZero, делов-то.

> Не нагляднее

Сложно найти что-то более наглядное чем текст вроде is_positive, так что мимо.

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

222. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Sw00p aka Jerom (?), 15-Июл-23, 21:39 
> А как часто вам нужен nan?

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

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

234. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Анонин (?), 15-Июл-23, 23:06 
> Деление на ноль - валидная операция, получается nan.

А вот кстати и нет.

> а зачем он в языке?

NaN существует потому что описан в IEEE 754 в бородатом 1985. Для floating-point.
И именно поэтому тут мы NaN не получим - у нас типы целочисленные.

В rust деление на ноль вызовет панику "attempt to divide by zero", а в сишечке...

А в сишечке это UB согласно 6.5.5 Multiplicative operators:
"The result of the / operator is the quotient from the division of the first operand by the
second; the result of the % operator is the remainder. In both operations, if the value of
the second operand is zero, the behavior is undefined"

Но это никакая не валидная операция.

Вообще не очень понимаю, чем вам мешает эти NonZero?
Ну сделали тип потому что он кому-то нужен. Ну не пользуйтесь им, в чем проблема?

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

242. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Аноним (249), 16-Июл-23, 00:20 
А зачем нужно значение null в значение указателя в Си? не для того ли что нужно указать malloc, что память не выделена.
Ответить | Правка | К родителю #222 | Наверх | Cообщить модератору

287. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Sw00p aka Jerom (?), 16-Июл-23, 23:20 
> А зачем нужно значение null в значение указателя в Си? не для
> того ли что нужно указать malloc, что память не выделена.

а значение причем? речь о типах, а от или иной тип определяет допустимость значений.


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

243. "Выпуск языка программирования Rust 1.71 "  +/
Сообщение от Аноним (249), 16-Июл-23, 00:25 
Rust дает возможность определять свои типы. Определяете struct {}. Реализуйте impl {} и trait {}
к ней.
Ответить | Правка | К родителю #222 | Наверх | Cообщить модератору

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

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




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

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