Size: a a a

Rust — русскоговорящее сообществo

2020 October 09

KR

Kai Ren in Rust — русскоговорящее сообществo
Хм, интересная идея. Надо бы уже разродиться на #[sealed] крейт, если ещё нету.
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Или просто &dyn private::Sealed
или любой приватный unit-подобный тип? чтобы совсем бесплатно было
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Алексей Герасимов
или любой приватный unit-подобный тип? чтобы совсем бесплатно было
Или так, да.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Алексей Герасимов
или любой приватный unit-подобный тип? чтобы совсем бесплатно было
Разумеется, технически transmute между ZST легален...
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Разумеется, технически transmute между ZST легален...
никто не будет знать что это ZST)
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Но это уже потребует написать unsafe {}, так что всё ок
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Kai Ren
Хм, интересная идея. Надо бы уже разродиться на #[sealed] крейт, если ещё нету.
Непонятно, что делать на call site
Этот аргумент всё равно надо передать руками
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
да и как он сделает его если тип нельзя называть?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Алексей Герасимов
да и как он сделает его если тип нельзя называть?
std::mem::transmute(())
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
А тип Rust выведет сам, называть его необязательно
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
а, он выведется типа
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Вставить Into и вывод типов не смогёт
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
Но тогда опять либо не zst, либо не object safe
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Kai Ren
Вставить Into и вывод типов не смогёт
Подожди, а impl Into<private::Seal> может и спасти
источник

KR

Kai Ren in Rust — русскоговорящее сообществo
А это object safe?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Kai Ren
А это object safe?
А нет?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Можно делать приватную обёртку, для неё имплементить AsRef<Self> и принимать как self: W<Self>
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Тогда внутри метода использовать легко
источник

АГ

Алексей Герасимов... in Rust — русскоговорящее сообществo
Andrey Vlasov
Можно делать приватную обёртку, для неё имплементить AsRef<Self> и принимать как self: W<Self>
для self разве можно указывать свои типы?
источник

AV

Andrey Vlasov in Rust — русскоговорящее сообществo
Andrey Vlasov
Можно делать приватную обёртку, для неё имплементить AsRef<Self> и принимать как self: W<Self>
Ну и AsMut для обёртки уникальной ссылки
источник