История изменений
Исправление Siborgium, (текущая версия) :
Почитал. Это полный ******.
Проблема: каст флоатов в целочисленные типы является UB, если значение выходит за рамки допустимых значений целевого типа. Например, inf (но не только).
Решение вменяемого человека: либо ничего не делать, либо ввести [отключаемую] проверку с выбросом исключения в случае возниковения такой проблемы. Так делает большинство языков.
Решение раста: молча сатурируем значения, пользователь никак не уведомляется о произошедшем (ну да, исключений-то нет). Чеки не отключаются, производительность проседает на ~20% в крейтах, активно использующих такие касты. Так делает только Java.
Отлично, просто отлично.
Исходная версия Siborgium, :
Почитал. Это полный ******.
Проблема: каст флоатов в целочисленные типы является UB, если значение выходит за рамки допустимых значений целевого типа. Например, inf (но не только).
Решение вменяемого человека: либо ничего не делать, либо ввести отключаемую проверку с выбросом исключения в случае возниковения такой проблемы. Так делает большинство языков.
Решение раста: молча сатурируем значения, пользователь никак не уведомляется о произошедшем (ну да, исключений-то нет). Чеки не отключаются, производительность проседает на ~20% в крейтах, активно использующих такие касты. Так делает только Java.
Отлично, просто отлично.