首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >铸造一个借来的盒子

铸造一个借来的盒子
EN

Stack Overflow用户
提问于 2017-02-07 00:08:18
回答 1查看 508关注 0票数 6

Rust的downcast()类型的Box方法要求调用站点完全拥有Box实例的所有权。似乎没有一个类似的,可以用一个借来的参考。这有什么原因吗?是否有一种解决办法可以适用于借来的实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-07 00:14:52

还有一种选择,但这不是Box的一种方法:它是Any::downcast_ref()。由于deref强制和Boxes Deref-impl,您可以在Box<T>上直接调用T的方法。因此,您可以在Box<Any>上直接调用Any::downcast_ref()

代码语言:javascript
复制
let b: Box<Any> = Box::new(27u64);

// The type of `ref_a` and `ref_b` is `&u64`
let ref_a = b.downcast_ref::<u64>().unwrap();
let ref_b = b.downcast_ref::<u64>().unwrap();
println!("{} == {}", ref_a, ref_b);

还可以使用Any::downcast_mut()来获取可变引用。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42079539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档