Rust имеет свойство Any
, но также имеет политику "не платите за то, что вы не используете". Как Rust реализует отражение?
Я предполагаю, что Rust использует ленивые теги. Каждый тип сначала не назначен, но позже, если экземпляр типа передается функции, ожидающей признак Any
, типу присваивается TypeId
.
Или, может быть, Rust помещает TypeId
в каждый тип, который его экземпляр, возможно, передан этой функции? Наверное, первый был бы дорогим.