Size: a a a

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

2021 June 23

VL

Vital L in Rust — русскоговорящее сообщество
моё кунгфу пока недостаточно сильно чтоб понять что происходит в этом макросе (
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Она просто дает тебе TypeId как буд-то твой тип это 'static
источник

VL

Vital L in Rust — русскоговорящее сообщество
@niksaak а насколько оно unsafe?
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Он берет тип MyType<'a, 'b, 'c> и реализует для него трейт возвращающий TypeId для MyType<'static, 'static, 'static>
источник

VL

Vital L in Rust — русскоговорящее сообщество
хочется какой-нибудь более-менее стандартной рефлексии в раст
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Рассчет на то что трейт используется только внутри твоей либы и ты заботишься о soundness и лайфтаймах.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Но сохранить/узнать лайфтайм в рантайме эта штука, конечно, не позволит.
источник

VL

Vital L in Rust — русскоговорящее сообщество
не
трейт будет имплементиться где угодно

статик просто спрятан :(
источник

VL

Vital L in Rust — русскоговорящее сообщество
интересно что было бы если бы не отозвали этот RFC https://github.com/rust-lang/rfcs/blob/master/text/1849-non-static-type-id.md
источник

VL

Vital L in Rust — русскоговорящее сообщество
а может есть возможность как в скриптовых языках получить строку с названием класса + имя пакета?
источник

Э

Эрик in Rust — русскоговорящее сообщество
Проблема с лайфтаймами в Any состоит в том, что лайфтаймы не существуют в рантайме, а значит их нельзя определить.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Трейт выше и предназначен для того чтоб имплементиться где угодно.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Но вот использование его методов - unsafe, так как ты получишь один и тот же TypeId для типов, параметризованых разными лайфтаймами.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
Кстати вот такая возможность есть.
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
std::any::type_name::<T>() работает и для T которые не являются 'static
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
И имя будет полное, включая крейт и модули.
источник

VL

Vital L in Rust — русскоговорящее сообщество
Ништяк. Надо примерять.
источник

VS

Vladimir Sentsov in Rust — русскоговорящее сообщество
А как
источник

MS

Mikola Summer Duck in Rust — русскоговорящее сообщество
?
источник

D

Denis in Rust — русскоговорящее сообщество
источник