Loyd
Всё правильно он делает в данном месте
Loo
?
Loyd
Я пояснил выше, что это часть контракта
Loyd
Result возвращать нелогично — это ошибка программиста, что он допустил нарушение контракта
Loo
Вот это контракты
Loyd
Ну, он не описал в документации — это минус, да
Loyd
Но это не отменяет того факта, что то, что программист захотел отрисовать прямую из одной/нуля точек — ошибка программиста
Loyd
Ну блин, ты меня троллируешь что ли? Такой мозг как ты и не знает разницы между coding errors и operational errors?
Loo
Да не, если бы в доке было описано, в разделе Panic, вопросов бы не было
Loyd
Ну это да.
Loyd
Можно прямо на гитхабе поправить и пр сделать )
Loyd
Минутное же дело
Loo
Да, надо сделать
Мерль
А что не так-то?
Можно было бы просто сделать три аргумента: первые две точки и опциональный список остальных И обойтись без runtime паник
Loyd
Неудобный апи жутко. Ты полигон хранишь нормально, массивом. Как бы type Pol = Vec<...>, а тут придётся распаковывать и слайс брать
Loyd
Это не "очередная рантайм ошибка"
Loyd
Есть чёткое разделение между операциональными ошибками и ошибками программиста
Loyd
В том же std дохрена assert-ов в публичном апи
Loyd
Там различие понимают и это хорошо
Loyd
Без этого апи становится раздутым и непонятно зачем усложнённым
Tuntz
Result возвращать нелогично — это ошибка программиста, что он допустил нарушение контракта
в приличных домах такие контракты описывают через систему типов
Loyd
Без оверхеда с преобразованием массива в свой тип — вряд ли
Loyd
Скорее в приличных домах с верификацией предусловие тут было бы
Tuntz
struct PolylineSource { inner: &[Point2], }, а конструктор проверяет размер и возвращает Result
Tuntz
особо не пахнет оверхедом
Loyd
Ну, во-первых, ты лайфтайм потерял и с этим у пользователей будет много счастья
Loyd
Во-вторых, это не отличается от того, чтобы из функции вернуть result
Tuntz
Ну, во-первых, ты лайфтайм потерял и с этим у пользователей будет много счастья
ну не так уж и много, в крайнем случае можно и вектор держать
Tuntz
но в любом случае ассерт для публичных контрактов - ущербность в стиле Си
Loyd
Ну, расскажи это разработчикам std
分解物質
Tuntz
линк в студию
分解物質
https://booksbyus.gitbooks.io/scalable-c/content/chapter2.html
Vlad
ТИХНАЛОГИИ
Євгеній 😌
ТИХНАЛОГИИ
йокарный бабай
Tuntz
ТИХНАЛОГИИ
раст какой-то ненастоящий системный язык
Tuntz
даже мозг потрахать стрингами - и то не дают
Alexander
Использование error-chain неизбежно?
Маjко
Почему ты хочешь его избежать?
Маjко
Есть failure
Маjко
Ну можно и руками, канеш
Маjко
Но вряд-ли ты хочешь
Alexander
Я хотел написать простую функцию которая из строки парсит несколько чисел - пришлось делать свой enum, и потом ещё заворачивать все возвраты через map_err, что выглядело не особо.
Alexander
Не или для всего писать преобразование from, что тоже добавляем много объема, но просто за функцией.
Alexander
В общем ничего чтоб нормально выглядело с ходу не получилось, и даже в официальной главе по error-handling оно не лучше.
doc
ну ты бы на другом языке писал код без проврок, а потом он падал бы
doc
здесь тебя компилятор сразу заставил норм код написать
doc
вот и все отличие
Alexander
Писать from, юзать question-mark
Или error-chain? Ну чтоб from не писать.
Маjко
ㅤ
Ну можно и руками, канеш
Пока что Result<T, E> хватает за глаза
Маjко
Бля, да что там? (((
Маjко
Или error-chain? Ну чтоб from не писать.
Или error-chain. Посмотри еще failure
Vlad
Твой телеграм сломался
ㅤ
Бля, да что там? (((
Ctrl+Space на строковом литерале в Rust-плагине для идеи позволяет вставить метод to_string()
Маjко
ㅤ
А будет ещё быстрее
ㅤ
Ускорение написания бойлерплейта это всегда была главная фишка идеи
Vlad
А, лол. Ну оно и так с автокомплитом быстро набирается
Да это скорее для тех, кто не расшарил еще как строки работают. IDE учит расту, тип того
ㅤ
Да это скорее для тех, кто не расшарил еще как строки работают. IDE учит расту, тип того
До первой ошибки компиляции, которая сама говорит, что надо бы .to_string() добавить
Vlad
До первой ошибки компиляции, которая сама говорит, что надо бы .to_string() добавить
Хмм, интересно, компилятор все это умеет, что мы тут планируем?
ㅤ
Поэтому надо было RLS интегрировать, а не велосипедить)))))
Vlad
Эпично будет лет через 5, когда RLS таки допилят, и интегрировать его нам все-таки придется. Хотя кто знает
ㅤ
Не, вы всё равно молодцы, надеюсь со временем cargo check будет фейлиться всё реже благодаря подсветке ошибок
ㅤ
Сейчас если идея ничего не подсвечивает, не факт, что скомпилится
ㅤ
А в джаве 100% почти
Vlad
Чекаешь настроечку и радуешься
Vlad
Но так-то да, свой анализ пилить замучаешься. borrow checker особенно. NLL ОСОБЕННО
Loyd
Пытались, RLS слишком говно
я в вимовском ale включил
Loyd
збс работает
Dmitry
нет бы RLS помогли допилить