Я использую ассоциативный список, чтобы связать TypeId
с типами событий и TypeId
с теми, кто хочет их получить.
Когда я пытаюсь получить TypeId
из Rc<Any>
, он дает вам тот же TypeId
(один из Rc
, хранящий Any
), независимо от того, что такое Any
.
#![feature(get_type_id)]
use std::any::*;
use std::rc::Rc;
fn main() {
let temp: Rc<Any> = Rc::new(13);
let temp2: &Any = &5;
assert_eq!(temp.get_type_id(), temp2.get_type_id()); //fails!
}
Как я могу получить TypeId
соответствующего Any
на внутренней стороне?
Я считаю, что Rc<_>
реализует черту Deref
, а также черту Any
. Это означает, что вы можете разыменовывать функции Rc
и вызывать внутренние ссылки. Это также означает, что Rc
имеет свой собственный связанный TypeId
. Я не ищу TypeId
из Rc
, я ищу TypeId
из разыменованного Any
.