История изменений
Исправление eao197, (текущая версия) :
Просто обычные указатели на интерфейс и в плюсах редко в контейнеры складывают, чаще будет какой-нибудь set<unique_ptr<T>>.
Давайте не будем говорить за всех. И уважать чужое время, для этого нужно читать, что вам пишут. В моем примере было множество голых указателей. Что временами имеет смысл, если a) это множество формируется на очень короткое время или b) если система владения допускает такие вещи.
То есть, не важно будет ли у нас Box<T>, &Т или даже *const/mut T.
Меня начинает мучить шиза. Если у экземпляра struct в Rust-е может быть нулевой размер, то когда для этого struct есть реализация конкретного трейта SomeIface, то размер этого struct вдруг перестает быть нулевым?
Если не перестает, то откуда гарантии, что у ссылок на SomeIface будут разные значения?
Или здесь, как и с защитой от data races, гарантии в Rust-е от слова «мамой клянусь»?
Исходная версия eao197, :
Просто обычные указатели на интерфейс и в плюсах редко в контейнеры складывают, чаще будет какой-нибудь set<unique_ptr<T>>.
Давайте не будем говорить за всех. И уважать чужое время, для этого нужно читать, что вам пишут. В моем примере было множество голых указателей. Что временами имеет смысл, если a) это множество формируется на очень короткое время или b) если система владения допускает такие вещи.
То есть, не важно будет ли у нас Box<T>, &Т или даже *const/mut T.
Меня начинает мучить шиза. Если у экземпляра struct в Rust-е может быть нулевой размер, то когда для этого struct есть реализация конкретного трейта SomeIface, то размер этого struct вдруг перестает быть пустым?
Если не перестает, то откуда гарантии, что у ссылок на SomeIface будут разные значения?
Или здесь, как и с защитой от data races, гарантии в Rust-е от слова «мамой клянусь»?