Size: a a a

2021 March 04

H

Hirrolot in rust_offtopic
Roman Blog
доказывает, если твоя либа построено на result - Тебе нужно врапать все ошибки во внешней логике. Очевидно, что ты можешь исходя из фанатичности, либо попытке сделать "тру-либу" страдать. Но это не означает ничего.
что значит врапать все ошибки во внешней логике?
источник

RB

Roman Blog in rust_offtopic
Hirrolot
что значит врапать все ошибки во внешней логике?
Ну ты не можешь вернуть внешнюю ошибку. У тебя будет enum со всеми ошибками. В него, очевидно, не входят ошибки не-твои
источник

p

polunin.ai in rust_offtopic
Roman Blog
Нет никакой зависимости. Есть тезис "pm и весь мусор выразительнее и лучше", после все обделались и начали эмулировать исключения.
Таки а где связь pm и исключений
источник

RB

Roman Blog in rust_offtopic
поэтому если ты используешь либу, которая возвращает ошибку из другого enum - тебе нужно её вравать в свой
источник

p

polunin.ai in rust_offtopic
К слову, try/catch это и есть pm только для исключений
источник

H

Hirrolot in rust_offtopic
Roman Blog
Ну ты не можешь вернуть внешнюю ошибку. У тебя будет enum со всеми ошибками. В него, очевидно, не входят ошибки не-твои
а что такое внешняя ошибка?
источник

RB

Roman Blog in rust_offtopic
Hirrolot
а что такое внешняя ошибка?
ну во внешней логике, логике, которую писал не ты.
источник

RB

Roman Blog in rust_offtopic
там другие либы, которые ты используешь. Стандартные либы
источник

H

Hirrolot in rust_offtopic
Roman Blog
ну во внешней логике, логике, которую писал не ты.
я могу своё перечисление ошибок просто типизировать ошибкой пользователя
источник

p

polunin.ai in rust_offtopic
Roman Blog
ну во внешней логике, логике, которую писал не ты.
Зачем мне возвращать внешнюю ошибку?
источник

А

Алексей in rust_offtopic
Roman Blog
поэтому если ты используешь либу, которая возвращает ошибку из другого enum - тебе нужно её вравать в свой
ну да
источник

А

Алексей in rust_offtopic
наконец то дельные вещи начал говорить
источник

p

polunin.ai in rust_offtopic
Roman Blog
там другие либы, которые ты используешь. Стандартные либы
enum Error {
 MyCrateError,
 SerdeError(serde::Error),
}
И так далее
источник

А

Алексей in rust_offtopic
polunin.ai
enum Error {
 MyCrateError,
 SerdeError(serde::Error),
}
И так далее
ну он об этом и говорит
источник

p

polunin.ai in rust_offtopic
https://docs.rs/teloxide/0.3.4/teloxide/prelude/enum.RequestError.html вот так у нас сделано и норм
источник

m

makoven in rust_offtopic
polunin.ai
enum Error {
 MyCrateError,
 SerdeError(serde::Error),
}
И так далее
Пакет с пакетами
источник

RB

Roman Blog in rust_offtopic
Hirrolot
я могу своё перечисление ошибок просто типизировать ошибкой пользователя
Хорошо, если типа ошибок определены во вне и тебе доступны. В любом случае загонять всё в своей enum нужно. И спользователю нужно логику переделывать
источник

А

Алексей in rust_offtopic
это в принципе немного неприятно, было бы круче, если бы были открытые типы-суммы
источник

p

polunin.ai in rust_offtopic
Roman Blog
Хорошо, если типа ошибок определены во вне и тебе доступны. В любом случае загонять всё в своей enum нужно. И спользователю нужно логику переделывать
И это логично, ведь контракт поменялся, нужно учитывать все возможные ошибки.
источник

H

Hirrolot in rust_offtopic
Roman Blog
Хорошо, если типа ошибок определены во вне и тебе доступны. В любом случае загонять всё в своей enum нужно. И спользователю нужно логику переделывать
с анонимными тип-суммами можно и не загонять в своё перечисление, а возвращать MyErrorType | UserErrorType

анонимных перечислений в расте нет, но это не фундаментальное ограничение подхода
источник