Size: a a a

2021 January 23

а

а это кто in rust_offtopic
оно работает, но не имеет осмысленного названия и нужно в доке писать что Left это ошибка, а Right это результат
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Dima
Думаешь этот тоже с жса пришел?
да не обязательно. Любой неплюсовый язык
источник

а

а это кто in rust_offtopic
а это кто
Использовать Either вместо Result это аналогично тому чтобы использовать bool вместо enum Direction { Forward, Backward }
получается хаскелисты — любители адхок решений
источник

D

Dima in rust_offtopic
Αλεχ Zhukovsky
да не обязательно. Любой неплюсовый язык
Вообще интересно как так получается, неужели кому-то не интересно как оно там устроенно внутри, даже на самом базовом уровне?
источник

D

Dima in rust_offtopic
Хотя возможно я не прав, всегда есть граница после которой ты все представляешь все как black box, просто у всех она разная
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
а это кто
получается хаскелисты — любители адхок решений
у хаскеллистов MonadError m
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
или даже CanThrow Foo m
источник

EG

Emmanuel Goldstein in rust_offtopic
а это кто
оно работает, но не имеет осмысленного названия и нужно в доке писать что Left это ошибка, а Right это результат
++
источник

s

suhr in rust_offtopic
а это кто
получается хаскелисты — любители адхок решений
Но ведь эти типы изоморфны.
источник

s

suhr in rust_offtopic
И Either E T, и Result<T, E> это всего лишь копроизведение типов T и E.
источник

EG

Emmanuel Goldstein in rust_offtopic
suhr
Но ведь эти типы изоморфны.
Да, но один из этих типов несёт семантику «это либо успех, либо ошибка», а другой нет
источник

EG

Emmanuel Goldstein in rust_offtopic
Разница такая же как с enum Turn { Left, Right } и bool
источник

D

Dima in rust_offtopic
Имеет смысл, если у тебя какой нибудь atomicbool, то делать для него доп енум не имеет смысла, ну ради красоты кода, Но это сомнительно
источник

EG

Emmanuel Goldstein in rust_offtopic
Тем более, что в расте нет Atomic<T>, ага
источник

EG

Emmanuel Goldstein in rust_offtopic
Но можно хотя бы сделать
const LEFT = AtomicBool::new(false);
const RIGHT = AtomicBool::new(true);
type Turn = AtomicBool;
источник

EG

Emmanuel Goldstein in rust_offtopic
Или ньютайп даже
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Тем более, что в расте нет Atomic<T>, ага
Ну есть, Но это прохладная история
источник

EG

Emmanuel Goldstein in rust_offtopic
Dima
Ну есть, Но это прохладная история
Даже в найтли нет же
источник

EG

Emmanuel Goldstein in rust_offtopic
Разве что через Box и AtomicPtr или ещё как заморочиться
источник

D

Dima in rust_offtopic
Emmanuel Goldstein
Даже в найтли нет же
Есть крейты
источник