LINUX.ORG.RU

История изменений

Исправление 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(). Вот это из той же серии.

Ну да, вместо этого каждая вторая сишная либа просто забивает :)

Мне кажется, или в коде на расте в среднем больше потенциальных мест паники, чем в коде на Си, сугубо потому что в коде расте в среднем больше проверок, чем в коде на Си?