在Rust中是否可以创建类型为
RefCell<Any>
的东西?我尝试了以下代码:fn test2<T : Any>(x : T) -> RefCell<Any>{
return RefCell::new(x) as RefCell<Any>
}
但是我收到了以下错误信息:
error: the trait `core::marker::Sized` is not implemented for the type `core::any::Any + 'static` [E0277]
<anon>:8 fn test2<T : Any>(x : T) -> RefCell<Any>{
RefCell
的文档包括以下内容:pub struct RefCell<T> where T: ?Sized {
// some fields omitted
}
这让我相信(以及来自这个问题的答案)这样的事情是可能的。我也尝试了:
fn test1<T : Any>(x : T) -> Box<Any>{
return Box::new(x) as Box<Any>
}
这个代码运行得很好。 Box
和 RefCell
看起来有相似的限制,所以我不太确定我错在哪里。非常感谢任何帮助。如果有帮助的话,我把它放在了Rust Playground中。