Como o Rust implementa a reflexão?

Ferrugem tem oAny característica, mas também possui uma política "não pague pelo que você não usa". Como o Rust implementa a reflexão?

Meu palpite é que Rust usa etiquetagem lenta. Todo tipo é inicialmente não atribuído, mas mais tarde se uma instância do tipo for passada para uma função que espera umAny característica, ao tipo é atribuído umTypeId.

Ou talvez Rust coloque umTypeId em todo tipo em que sua instância é possivelmente passada para essa função? Eu acho que o primeiro seria caro.