19得票2回答
了解在Rust中如何使用Rc<RefCell<SomeStruct>>

我正在查看一些使用的代码Rc&lt;RefCell&lt;SomeStruct&gt;&gt; 所以我去了解Rc和RefCell之间的区别: 以下是选择Box、Rc或RefCell的原因总结: Rc允许多个所有者拥有相同的数据;Box和RefCell只允许单个所有者。 Box允许在编译时检查...

17得票2回答
如何决定函数输入参数是否应该是引用?

在编写函数时,如何决定使输入参数成为引用参数还是传值参数? 例如,我应该这样做吗? fn foo(val: Bar) -&gt; bool { check(val) } // version 1 或者使用引用参数来替代? fn foo(val: &amp;Bar) -&gt; boo...

16得票2回答
Clojure中惯用的方式来产生和管理后台线程

在Clojure中创建一个在后台循环执行更新共享引用并管理其生命周期的线程,有没有惯用的方式?我发现自己在使用future实现这个功能,但感觉有点像是一种不太正式的hack,因为我从来没有返回过有意义的值。例如:(future (loop [] (do (Thread/sleep 10...

15得票2回答
如何在 Rust 中对向量元素运行循环并在循环内外更改向量?

我刚接触Rust。 我需要在for循环之前创建一个向量。 在其上运行for循环。 更改for循环中的向量。 然后在for循环之后更改向量。 我尝试了以下代码并尝试使用不可变借用,但两者都没有起作用。fn main() { let mut vec1 = vec![4, 5]; ...

14得票1回答
在Rust中,是否可能返回已借用或拥有的类型?

在下面的代码中,我怎样才能返回floor的引用而不是一个新对象?是否可能使函数返回借用引用或拥有的值?extern crate num; // 0.2.0 use num::bigint::BigInt; fn cal(a: BigInt, b: BigInt, floor: &amp;B...

14得票1回答
为什么在 Rust 的 `Cell<T>` 中,`set` 方法明确丢弃旧值?

为什么在Cell上定义的set方法,在最后一行明确地删除了old值?难道函数返回时不会自动释放内存吗? use std::mem; use std::cell::UnsafeCell; pub struct Cell&lt;T&gt; { value: UnsafeCell&lt;...

13得票3回答
暂时移出借用的内容

我正在尝试替换可变借用中的一个值;将部分内容移动到新值中: enum Foo&lt;T&gt; { Bar(T), Baz(T), } impl&lt;T&gt; Foo&lt;T&gt; { fn switch(&amp;mut self) { *...

13得票3回答
利用`std::weak_ptr`实现自杀对象

我正在考虑在游戏中使用“自杀对象”来模拟实体,即可以删除自身的对象。通常的C++03实现(简单地delete this)对于可能引用自杀对象的其他对象不起作用,这就是为什么我要使用std::shared_ptr和std::weak_ptr。 现在是代码转储:#include &lt;memo...

13得票5回答
C++11 - 所有权和访问器

我刚接触C++,但还不太理解所有权的概念,尤其是在使用getter时。以下是一些示例代码:class GameObject { public: Transform *transform(); private: Transform _transform; }; 我猜原始指针的使用是不安全...

13得票1回答
在Rust中,你能拥有一个字符串字面值吗?

根据Rust书的说法: Rust中的每个值都有一个被称为所有者的变量。同一时间只能有一个所有者。当所有者超出范围时,该值将被丢弃。 根据rust-lang.org的说法: 静态项在程序结束时不会调用drop。 阅读完此SO帖子并查看以下代码后,我理解foo是一个值,其变量y(等...