本身是java程序猿,现在学习rust,写了段代码
pub fn init_node(regions:& Vec<RefCell<Region>>)->Vec<Node>{
let mut nodes:Vec<Node>=vec![];
for region in regions {
let temp_nodes:Vec<Node>=Region::generate_node( region.borrow().deref());
for temp_node in temp_nodes {
nodes.push(temp_node);
}
}
nodes
}
大概的逻辑是,传进来一个对象,生成一个对象,返回,
报了错,
Local variables, function parameters and temporaries are all dropped before the end of the function body. So a reference to them cannot be returned.
我理解的意思是,
生成的对象所占用的内存是在这个方法执行的方法栈里,当方法返回结束的时候,这个生成的对象就随着方法的返回而被回收了
现在的问题是:
- 在rust里,怎么控制对象是在栈里分配,还是在堆里分配
- 我要实现一个类似上面的功能,我该怎么做,亦或者,我该改变这种考虑问题的方式吗?
1
共 1 条评论, 1 页
评论区
写评论一般改成nodes.push(temp_node.clone())就行了