问题标签 [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.
rust - 使用 Rust 结构上实现的函数中的移动值
我有一个Player
带有方法的结构。我创建了一个新播放器并尝试调用该方法:
我明白了:
这只是一个例子,我在整个程序中多次调用函数,因此每次都会出现同样的错误。
我知道这是因为结构Player
没有派生Copy
特征,但我不能这样做,因为String
and Vec<i32>
。有解决办法吗?
rust - Rust,在闭包内创建一个闭包,避免“闭包可能比当前函数更长寿”
我正在尝试编写一个函数来转换表单中的数据结构:
进入
我的代码目前是这样的:
我收到此错误:
我认为这意味着 Rust 不知道如何复制我的 i32s 向量,因此认为它必须改为移动 vec,但不能这样做。
我该如何解决这个问题?为 vec 实现一个 Copy 方法,还是有更好的方法来做到这一点?
rust - Rust 链表不能借用上一个和下一个元素作为可变的(只需要不可变的引用)
目前,我正在开发一个小应用程序来模拟(多链)钟摆。为了保存它们,我决定使用 std::collections::LinkedList。
显示它们并静态移动它们不是问题,但是为了计算真正的运动,我需要知道父摆和子摆的一些值。
我真的不需要对它们的可变引用,但是链表 API 不允许我采用不可变的引用。但我想这无论如何都不会改变编译器的想法,因为它仍然是一个可变的和一些不可变的借用。
我的代码如下所示:
如果我将此代码包装在 unsafe {} 中,编译器不会在意并一直告诉我我有多个可变借用 + 一个不必要的unsafe
块。
如果有人可以帮助我,那就太棒了!
如果在这里使用 LinkedList 完全是垃圾,并且有更好的方法,请告诉我!
提前谢谢了!
rust - 不能将 `hsets` 借为可变的,因为它也被借为不可变的
我想将 HashSet[0] 的元素移动到 HashSet[1],但总是遇到借用错误:我尝试使用 tmp vec 保存元素,但问题仍然存在:
结果:
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 有数百万个元素。所以可能不是一个好方法。谢谢椒盐脆饼让路!
loops - rust 借用检查看起来很聪明,它可以检查和扁平化循环的读写。但我怎样才能绕过它?
rust 借用检查看起来很聪明,它可以检查和扁平化循环的读写。但我怎样才能绕过它?
以下代码运行良好:
当评论“break”行时,将得到:
rust - 遍历一个大小的 Range借用它
迭代 aRange<T>
似乎消耗了范围实例,因为into_iter
函数获取了范围的所有权。通过查看range 的文档,很明显该Borrow
特征仅针对动态范围对象实现。如果没有克隆,是否可以遍历一个范围,同时将该范围的不可变引用传递给其他函数?
如上所示,函数可以借用,Range<T: Sized>
但编译器本身不允许借用范围。
到目前为止,我已经尝试使用Box
智能指针,但行为是相同的。简单地说,by_ref()
是可用的,但这也会限制我们作为不可变借用,因为我们已经有了对同一个对象的可变借用。
rust - Rust 借用奇怪的行为
就像下面的 rust 代码:while
循环编译并运行良好,但for iter
版本没有编译,由于错误:
但是据了解,while
loop也有同样的场景,len
也是不可变借用,为什么和as借用可变get
不冲突呢?push
请指教我在这里缺少什么理解,非常感谢您的启发!
asynchronous - 将 tokio::spawn 与具有可变引用的未来一起使用时,“借用的值不够长”
以下代码无法编译,因为编译器无法保证hashmap_of_lists
会存在足够长的时间。我无法克服这一点。
我尝试过使用Arc
,Mutex
但是由于内部的异步方式some_func
和使用,我遇到了其他问题Mutex
。
我收到这个错误
rust - 返回生锈的切片
为什么 foo 运行良好,但 bar 导致编译错误。两者都从临时创建的数组中返回一个切片。