I
Anton
Посмотри пример
I
ну это мой же пример
Anton
Пардон
https://play.rust-lang.org/?gist=e885343b7acb84b3aa8a6ff3a5b43b33&version=stable
I
Anton
https://play.rust-lang.org/?gist=db045afaea7acc4b42cd9ce736374c9c&version=stable
Anton
Сори с телефона
Anton
почему
Что легче передать 4/8 байт или многобайтовую строку?
I
А если эта ошибка будет использоваться в другом участке?
Придется либо делать общий логгер, либо каждый раз писать
Err(Error::Kind1) => {
println!("Err1");
},
Anton
https://play.rust-lang.org/?gist=d8a3bee9a347013b4e29de6051883c88&version=stable
Anton
Всегда можно написать так
Anton
в e будет любая ршибка без сравнения
I
Вот в этом прикол что приходится делать функцию, в которой прописываются текста ошибки. То есть нельзя в енуме сразу определить текста напрямую и передавать его, а уже из него получать текст
I
т.к. в енуме можно только тип указать String, но не сам стринг
Anton
ты ссложно мыслишь =)
I
ну может. На ноде я бы просто сделал
const Errors = {
notFound: "Not found error descr",
anotherError: "Bla bla bla"
}
throw new Error(Errors.notFound)
I
я привык уже мыслить в такой плоскости)
Anton
https://play.rust-lang.org/?gist=0646f9129e9864156a5ad511ac952885&version=stable
Anton
а так почему низя?
I
можно, но вот жаль что нет еще выработанных методик и стандартов
Anton
не все сразу
Anton
потом дойдешь до крейтов error_chain или failure
I
я уже смотрел, советовали error_chain
Anton
дело вкуса
Loyd
Loyd
Надо нормальные ошибки с подклассами заводить
Loyd
И цепочки строить
I
с какими подклассами?
Loyd
И да, лучший способ объяснить ? — показать определение макроса try!
Loyd
с какими подклассами?
class MySuperError extends BaseError {}
class OloloError extends MySuperError {}
...
catch (ex) {
throw new OloloError(message, ex)
}
BaseError — класс, который умеет cause (другую ошибку) сохранять, чтобы потом цепочки строить можно было
I
Loyd
В сообщении, на которое я отвечал, было про ноду
Loyd
И я показал, что ты и там неправильно делаешь
I
а тебя не смутило что это просто быстрый пример чтобы не писать кучу всего что ты написал?
Loyd
Не смутило, ибо выше ты текстом это же описал
Loyd
Loyd
То есть какие-то константы вместо нормального перечисления
Loyd
В расте перечесление будет в алгтд через enum, а жс-е через подклассы, а не так, как ты показываешь
Loyd
Ещё раз: ты сказал, что вот в ноде ты бы сделал так-то, а в расте так нельзя
Loyd
Всё, что я хотел тебе сказать, это что и в ноде так делать не надо, а надо делать по-другому
I
Ты меня решил ноде поучить, ну давай, рассказывай что знаешь
Loyd
Аналог для чего есть и в расте
Loyd
Окей, пиши дальше свой говнокодец
I
Пробугуртил учитель
Filipp
Loyd
Если под фронтендом понимается клиент, то мимо
Loyd
Пробугуртил учитель
Окей. Но если бы ты такое показал на собеседовании, то к нам бы ты не попал однозначно
I
Loyd
Если 4 строчки кода для тебя "огромные пласты", то у меня для тебя плохие новости
Loyd
Loyd
Потому что ты не хочешь видеть сути за тем, что пишешь, только форму
I
Это как показывать как ты сделал класс в с++ с наследованием и сравнить код с си, когда можно написать так же
Loyd
Чтобы различать варианты тебе нужен классификационный тег
Loyd
И что это будет — тег в tagged union-е или имя класса — нет никакой разницы
I
Слушай, а зачем тебе на работу нужно собеседование, когда ты не работаешь, а сидишь в телеграме и общаешься ни о чем
Loyd
А ты по субботам работаешь?
Loyd
Печально
I
Фриланс
Loyd
А, ну тогда всё понятно
Loyd
Как же я сразу не догадался
I
Ну ок, почему ты не сходишь погулять, суббота же
I
вместо этого сидишь и доказываешь что-то
I
в общем нет времени на тебя, удачи
I
(Можешь считать что ты победил, а то еще повесишься :) )
I
Loyd
Окей.
I
удачи
Loyd
Но ты бы уходил из фриланса всё-таки
Anton
Loyd
Ну, дизель не так прост на самом деле. Надо знатно поебаться, чтобы свои типы впилить
Loyd
@tapok_satan ты таки посмотрел yew?
Anton
I
Loyd
лол
Anton