Size: a a a

2020 October 28

IT

Ilya Titkov in Rust Async
antuan
спасибо, попробую переварить
Если на твоем коде, то что-то вроде этого https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=30935af298b8f0f960229e13c4ffabaa
источник

a

antuan in Rust Async
да, я примерно понял. у меня нарочито остановка не была реализована. ещё раз спасибо большое
источник

a

antuan in Rust Async
осилил, завелось. сильно проще, спасибо :)
источник

IT

Ilya Titkov in Rust Async
antuan
осилил, завелось. сильно проще, спасибо :)
👍
источник
2020 October 29

S

Sooqa in Rust Async
Амм, ребят ...
Я что не могу сделать
trait A { type Inner }
trait Example { type Associated: String | A where Inner == Vec<_> }
источник

S

Sooqa in Rust Async
?
источник

MB

Mikail Bagishov in Rust Async
Sooqa
Амм, ребят ...
Я что не могу сделать
trait A { type Inner }
trait Example { type Associated: String | A where Inner == Vec<_> }
Казалось бы:

trait Inner2 {}
impl Inner2 for String {}
impl<T, U> Inner2 for T where T: A<Inner=Vec<U>> {}

type Associated: Inner2;
источник

S

Sooqa in Rust Async
Замечательно, пусть это куча бойлерплейта, но возможно - решение. Как теперь запечатать трейт?
источник

RG

Random Guy in Rust Async
Алексей Герасимов
можете скинуть MRE? интересно все же, вдруг в токио бага какая
Точно не в токио дело было :) Беда с кубером и руками
источник

KR

Kai Ren in Rust Async
Sooqa
Замечательно, пусть это куча бойлерплейта, но возможно - решение. Как теперь запечатать трейт?
Гугли rust code guidelines sealing trait

Выражается через приватный под-модуль с публичным трейтом
источник

D

Denis in Rust Async
я иногда готов убивать за sealed trait'ы
источник

D

Denis in Rust Async
доков к ним нет, что это такое — непонятно, какие у них требования — непонятно, сплошное удобство
источник

D

Denis in Rust Async
в чём проблема сделать НЕ-sealed трейт? ну будет у юзеров возможность имплементировать этот трейт, и что с того?
источник

PL

Paul ❌ Loyd in Rust Async
Denis
я иногда готов убивать за sealed trait'ы
Согласен. Но делать их надо
источник

S

Sooqa in Rust Async
Kai Ren
Гугли rust code guidelines sealing trait

Выражается через приватный под-модуль с публичным трейтом
Здорово, тока сначала бойлер напишу
источник

S

Sooqa in Rust Async
источник

MB

Mikail Bagishov in Rust Async
Denis
в чём проблема сделать НЕ-sealed трейт? ну будет у юзеров возможность имплементировать этот трейт, и что с того?
Ну тут уже скорее философский вопрос на тему стабильности API (ну, внутренний интерфейс, оказывается доступным пользователю)
источник

MS

Mikola Summer Duck in Rust Async
#[doc(hidden)] 😸
источник

AI

Alex Ilizarov in Rust Async
Mikola Summer Duck
#[doc(hidden)] 😸
Все равно потом претензии будут
источник

KR

Kai Ren in Rust Async
Denis
доков к ним нет, что это такое — непонятно, какие у них требования — непонятно, сплошное удобство
Почему нет? У самих sealed трейтов обычная дока же. А вот уже у его супер-трейта нету. Но так как супер-трейт создаётся только для sealing, то там дока и не нужна. Просто нужно дать очевидное название. К примеру:
trait MyTrait: private::Sealed
И всё путём.

Нужно это действительно редко. Но иногда прям очень нужно.

Жаль только, что эта техника не языковая фича, а эмулируется модулями и приватностью.
Не хватает сверху exhaustive проверок, и учёта этого дела при резолве orphan rules.
источник