Size: a a a

2021 April 15

AS

Aleksey Sidorov in rust_offtopic
Но мне интересно, а в ядре же что-то типа assert() юзается? Скорее всего да, но тогда чем это отличается от panic! с режимом panic_abort? В nightly вот есть Box::try_new, ядро все равно на найтли расте. Anyway как мне кажется, для ядра свою экосистему крейтов делать придется.

Хм, мне вот казалось, что при делении на 0 в случае целых чисел сишка прекрасно себе вылетает. К тому же вроде как в расте есть опции для rustc, которые отключают паники для переполнений и тому подобного в целых числах.
источник

AS

Aleksey Sidorov in rust_offtopic
Как я понял из обсуждения - самая неприятность как раз в том, что в core слишком много всего, типа тех же i128. То есть, видимо, если ее еще более мелкими кусками порезать, то все пролезет.
источник

AI

Alex Ilizarov in rust_offtopic
Лайфтаймы так то
источник

TK

Traveller Kolsky in rust_offtopic
Странно вот что: деление на 0 может вызвать zero trap. То есть вся программа повиснет, если ловушку не обработать. Теперь, проблема заключается в том, что паника уровня ядра кладёт всю систему, если я правильно понял. Но с трапом она просто зависнуть должна, если только сама ОС не занимается перехватом прерываний и обработкой ошибок. Так в чём загвоздка конкретно с паниками? У них тоже есть обработчик, который можно написать вручную.
источник

TK

Traveller Kolsky in rust_offtopic
Может, если бы вообще всё было написано на расте, то и возражений бы не было
источник

AI

Alex Ilizarov in rust_offtopic
А почему деление на ноль такое проблемное?
источник

AI

Alex Ilizarov in rust_offtopic
Я вот все как данность воспринимал это
источник

AI

Alex Ilizarov in rust_offtopic
Но почему просто не возвращать ноль в результат
источник

AS

Aleksey Sidorov in rust_offtopic
Для флоата есть inf в такой ситуации, а для целых чисел совершенно непонятно, что туда писать.
источник

TK

Traveller Kolsky in rust_offtopic
И nan ещё
источник

AS

Aleksey Sidorov in rust_offtopic
Короче там из обсуждения складывается впечатление, что чуваки прототип раста для ядра на скору руку нахренячили и забили на обработку ошибок памяти, а Линус их в это справедливо ткнул.
источник

AI

Alex Ilizarov in rust_offtopic
0
источник

AS

Aleksey Sidorov in rust_offtopic
а почему не foo::MAX?
источник

s

suhr in rust_offtopic
Но при этом Линус намного благосклонее к расту, чем к плюсам.
источник

s

suhr in rust_offtopic
Видимо, раст ещё возможно починить.
источник

AI

Alex Ilizarov in rust_offtopic
Ты взял 0 частей исходного числа
источник

AI

Alex Ilizarov in rust_offtopic
=== 0
источник

AS

Aleksey Sidorov in rust_offtopic
Собственно ведь все вопросы и претензии там чисто технические, а не религиозные.
источник

TK

Traveller Kolsky in rust_offtopic
Короче, для деления нормально возвращать Result<T, !>, как мне кажется. И писать либо let Ok(res) = a / b, либо .unwrap_or, с помощью чёрной магии (и ub!) срабатывающего в случае такого деления.
источник

TK

Traveller Kolsky in rust_offtopic
Не вижу логики
источник