我有这样一个变量
HashMap::<String, Box<dyn Any>>::new();
map.insert(String::from("test-key"), Box::new(String::from("hello world")));
这个kv取出来后调用is::<String>()返回的是true,但是我自己创建了一个trait模仿了Any的is和downcast_ref,将上述代码中的泛型改为我模仿的那个trait,之后取出kv调用is::<String>()返回的是false,求教一下这是为什么,谢谢看到这里的朋友!!!
1
共 6 条评论, 1 页
评论区
写评论没抄错,就抄了两个方法,downcast_ref,is
--
👇
viruscamp: 1. 贴完整代码或者有效 play 链接 2. 抄 Any 的话,就这么几行,自己看看哪里抄错了
我是复制的Any中的实现啊,和Any一样的
--
👇
Aya0wind: 至少给一下你那个trait怎么写的吧。
any是通过比较type_id实现的,你是怎么实现的?
就是抄下来的,一个字符都不差
--
👇
teshin: 把any的代码抄下来就不会出错了
至少给一下你那个trait怎么写的吧。
any是通过比较type_id实现的,你是怎么实现的?
把any的代码抄下来就不会出错了