Как вы можете получить TypeId внутреннего значения значения Rc или Boxed, а не TypeId включающего типа? - PullRequest
0 голосов
/ 31 октября 2018

Я использую ассоциативный список, чтобы связать 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.

1 Ответ

0 голосов
/ 31 октября 2018

Явное разыменование типа упаковки:

(*temp).get_type_id()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...