问题标签 [borrow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2629 浏览

rust - 使用 Rust 结构上实现的函数中的移动值

我有一个Player带有方法的结构。我创建了一个新播放器并尝试调用该方法:

我明白了:

这只是一个例子,我在整个程序中多次调用函数,因此每次都会出现同样的错误。

我知道这是因为结构Player没有派生Copy特征,但我不能这样做,因为Stringand Vec<i32>。有解决办法吗?

0 投票
2 回答
216 浏览

rust - Rust,在闭包内创建一个闭包,避免“闭包可能比当前函数更长寿”

我正在尝试编写一个函数来转换表单中的数据结构:

进入

我的代码目前是这样的:

我收到此错误:

我认为这意味着 Rust 不知道如何复制我的 i32s 向量,因此认为它必须改为移动 vec,但不能这样做。

我该如何解决这个问题?为 vec 实现一个 Copy 方法,还是有更好的方法来做到这一点?

0 投票
1 回答
161 浏览

rust - Rust 链表不能借用上一个和下一个元素作为可变的(只需要不可变的引用)

目前,我正在开发一个小应用程序来模拟(多链)钟摆。为了保存它们,我决定使用 std::collections::LinkedList。

显示它们并静态移动它们不是问题,但是为了计算真正的运动,我需要知道父摆和子摆的一些值。

我真的不需要对它们的可变引用,但是链表 API 不允许我采用不可变的引用。但我想这无论如何都不会改变编译器的想法,因为它仍然是一个可变的和一些不可变的借用。

我的代码如下所示:

如果我将此代码包装在 unsafe {} 中,编译器不会在意并一直告诉我我有多个可变借用 + 一个不必要的unsafe块。

如果有人可以帮助我,那就太棒了!
如果在这里使用 LinkedList 完全是垃圾,并且有更好的方法,请告诉我!

提前谢谢了!

0 投票
2 回答
266 浏览

rust - 不能将 `hsets` 借为可变的,因为它也被借为不可变的

我想将 HashSet[0] 的元素移动到 HashSet[1],但总是遇到借用错误:我尝试使用 tmp vec 保存元素,但问题仍然存在:

结果:

0 投票
1 回答
48 浏览

rust - 我想将 HashSet[0] 的元素移动到 HashSet[1], error[E0502]: cannot borrow `hsets` as mutable 因为它也被借用为不可变

我想将 HashSet[0] 的元素移动到 HashSet[1]:

方案一:直接remove() insert()

错误,无法遵守。

项目2:使用tmp vec

正确,但需要额外的内存!其实我的hsets数据大小超过56G内存!所以我希望不要增加额外的内存。

项目 3:使用 split_at_mut()

正确,但我的 hsets vec 有数百万个元素。所以可能不是一个好方法。谢谢椒盐脆饼让路!

0 投票
1 回答
74 浏览

loops - rust 借用检查看起来很聪明,它可以检查和扁平化循环的读写。但我怎样才能绕过它?

rust 借用检查看起来很聪明,它可以检查和扁平化循环的读写。但我怎样才能绕过它?

以下代码运行良好:

当评论“break”行时,将得到:

0 投票
1 回答
293 浏览

rust - 遍历一个大小的 Range借用它

迭代 aRange<T>似乎消耗了范围实例,因为into_iter函数获取了范围的所有权。通过查看range 的文档,很明显该Borrow特征仅针对动态范围对象实现。如果没有克隆,是否可以遍历一个范围,同时将该范围的不可变引用传递给其他函数?

如上所示,函数可以借用,Range<T: Sized>但编译器本身不允许借用范围。

到目前为止,我已经尝试使用Box智能指针,但行为是相同的。简单地说,by_ref()是可用的,但这也会限制我们作为不可变借用,因为我们已经有了对同一个对象的可变借用。

0 投票
3 回答
181 浏览

rust - Rust 借用奇怪的行为

就像下面的 rust 代码:while循环编译并运行良好,但for iter版本没有编译,由于错误:

但是据了解,whileloop也有同样的场景,len也是不可变借用,为什么和as借用可变get不冲突呢?push请指教我在这里缺少什么理解,非常感谢您的启发!

0 投票
0 回答
1110 浏览

asynchronous - 将 tokio::spawn 与具有可变引用的未来一起使用时,“借用的值不够长”

以下代码无法编译,因为编译器无法保证hashmap_of_lists会存在足够长的时间。我无法克服这一点。

我尝试过使用ArcMutex但是由于内部的异步方式some_func和使用,我遇到了其他问题Mutex

我收到这个错误

0 投票
0 回答
33 浏览

rust - 返回生锈的切片

为什么 foo 运行良好,但 bar 导致编译错误。两者都从临时创建的数组中返回一个切片。