gpt4 book ai didi

rust - 是否可以创建 RefCell

转载 作者:行者123 更新时间:2023-11-29 07:49:32 26 4
gpt4 key购买 nike

是否可以创建类型为 RefCell<Any> 的东西?在使用rust ?我尝试了以下方法:

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
}

这让我相信(以及 this 问题的答案)这样的事情是可能的。我也试过:

fn test1<T : Any>(x : T) -> Box<Any>{
return Box::new(x) as Box<Any>
}

效果很好。两者 BoxRefCell似乎有相似的界限,所以我不太确定我在这里遗漏了什么。任何帮助将非常感激。我在 Rust Playground 里有这个,如果这有帮助的话。

最佳答案

Box具有特征 std::ops::CoerceUnsized , 允许转换为 Box<Any> . RefCell没有,所以你不能。

当然你可以这样做:

let x = RefCell::new( String::new() );
let x = &x as &RefCell<Any>;

所以你可以有一个RefCell<Any> ,但不能构造一个或强制转换为一个,只能强制引用。

关于rust - 是否可以创建 RefCell<Any>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35304663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com