История изменений
Исправление intelfx, (текущая версия) :
Например, между целочисленными и IEEE754. Пойди угадай, что там: floor, trunc или round? Или, например, преобразование из 754 в Bool. Как оно с NaN будет работать? А хз. Такие штуки должны быть максимально явными, иначе говна не разгребёшь.
Сначала я тебе поверил, а по факту From<fXX>
ни для iXX, ни для bool не существует. В мане даже написано явно:
# When to implement From
- The conversion is lossless: semantically, it should not lose or discard information <...>
- The conversion is obvious: it’s the only reasonable conversion between the two types <...>
Отсутствием более удобных средств работы с ошибками кроме Result<>. В условиях, когда нет нормальных исключений, получается то что получается. У меня тут есть пара софтин на Rust, которые регулярно падают, потому что внутри какой-то библиотеки (даже не самой софтины!) сработал panic!() при ошибке в .unwrap().
Я бы тоже хотел, чтобы в расте были исключения (а ещё ABI-resilient динамическая компоновка и чуть более умные генерики, чем через мономорфизацию на каждый чих), но индустрия порешала за меня. А как надо-то? Я уже как-то говорил тебе, что говнокод можно написать на любом языке.
Представь, как если бы каждая вторая сишная либа в случае, если не смогла что-то нормально обработать, дёргала abort(). Вот это из той же серии.
Ну да, вместо этого каждая вторая сишная либа просто забивает :)
Мне кажется, или в коде на расте в среднем больше потенциальных мест паники, чем в коде на Си, сугубо потому что в коде на расте в среднем больше проверок, чем в коде на Си?
Исправление intelfx, :
Например, между целочисленными и IEEE754. Пойди угадай, что там: floor, trunc или round? Или, например, преобразование из 754 в Bool. Как оно с NaN будет работать? А хз. Такие штуки должны быть максимально явными, иначе говна не разгребёшь.
Сначала я тебе поверил, а по факту From<fXX>
ни для iXX, ни для bool не существует. В мане даже написано явно:
# When to implement From
- The conversion is lossless: semantically, it should not lose or discard information <...>
- The conversion is obvious: it’s the only reasonable conversion between the two types <...>
Отсутствием более удобных средств работы с ошибками кроме Result<>. В условиях, когда нет нормальных исключений, получается то что получается. У меня тут есть пара софтин на Rust, которые регулярно падают, потому что внутри какой-то библиотеки (даже не самой софтины!) сработал panic!() при ошибке в .unwrap().
Я бы тоже хотел, чтобы в расте были исключения, но индустрия порешала за меня. А как надо-то? Я уже как-то говорил тебе, что говнокод можно написать на любом языке.
Представь, как если бы каждая вторая сишная либа в случае, если не смогла что-то нормально обработать, дёргала abort(). Вот это из той же серии.
Ну да, вместо этого каждая вторая сишная либа просто забивает :)
Мне кажется, или в коде на расте в среднем больше потенциальных мест паники, чем в коде на Си, сугубо потому что в коде на расте в среднем больше проверок, чем в коде на Си?
Исходная версия intelfx, :
Например, между целочисленными и IEEE754. Пойди угадай, что там: floor, trunc или round? Или, например, преобразование из 754 в Bool. Как оно с NaN будет работать? А хз. Такие штуки должны быть максимально явными, иначе говна не разгребёшь.
Сначала я тебе поверил, а по факту From<fXX>
ни для iXX, ни для bool не существует. В мане даже написано явно:
# When to implement From
- The conversion is lossless: semantically, it should not lose or discard information <...>
- The conversion is obvious: it’s the only reasonable conversion between the two types <...>
Отсутствием более удобных средств работы с ошибками кроме Result<>. В условиях, когда нет нормальных исключений, получается то что получается. У меня тут есть пара софтин на Rust, которые регулярно падают, потому что внутри какой-то библиотеки (даже не самой софтины!) сработал panic!() при ошибке в .unwrap().
Я бы тоже хотел, чтобы в расте были исключения, но индустрия порешала за меня. А как надо-то? Я уже как-то говорил тебе, что говнокод можно написать на любом языке.
Представь, как если бы каждая вторая сишная либа в случае, если не смогла что-то нормально обработать, дёргала abort(). Вот это из той же серии.
Ну да, вместо этого каждая вторая сишная либа просто забивает :)
Мне кажется, или в коде на расте в среднем больше потенциальных мест паники, чем в коде на Си, сугубо потому что в коде расте в среднем больше проверок, чем в коде на Си?