问题标签 [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 投票
2 回答
58 浏览

rust - 如何将变量的资源推入向量但使其保持活动状态

我有一个关于如何将move变量转换为向量但不破坏该变量的问题,因为它必须在循环中重用。下面显示了我的意思:

上面的代码运行。clone但是,我想避免

因为letterset无论如何都会被清除。相反,我想将其内容移入v 但保持其活动状态,因为letterset必须用于下一次迭代。

我试图删除.clone(),但显然这会导致“移动后借用”错误。我想知道怎么做,谢谢。

0 投票
1 回答
65 浏览

asynchronous - 无法在异步函数中更改 pathBuff/path 变量

我不确定是否应该在此处或代码审查中发布此内容。代码审查似乎只有功能代码。

所以我有很多我不太了解的问题。(我是菜鸟)完整的代码可以在这里找到:https ://github.com/NicTanghe/winder/blob/main/src/main.rs 主要问题在这里:

我尝试了各种方法来解决可变或引用借用的问题,但我似乎无法让它发挥作用。

我尝试的每件事都会遇到不同的错误。此外,如果这是重复的,我很抱歉,但是寻找错误的单独解决方案只会给我一个不同的错误。在一个圈子里。

全功能

此外,它似乎使用

使 rust 无法识别 unwrap() 函数 → 我将如何使用 using ?

0 投票
0 回答
154 浏览

rust - Rust:在 while 循环中移动问题

我有以下 rust 代码,对于我的生活,我无法解决为什么我会遇到与此值有关的借用检查器问题,以及为什么它会作为 while 循环的一部分被移动。

代码:

错误:

非常感谢任何帮助

0 投票
1 回答
92 浏览

rust - 为什么我得到“不能一次多次借用 `arr[_]` 作为可变变量”?

我有一个使用 Rust 创建冒泡排序的编程任务。我在 Rust 方面并没有太多经验,所以这对我来说有点困难:

错误:

0 投票
2 回答
58 浏览

rust - 借用错误可通过中间变量绕过

我正在尝试在 Rust 中实现一个简单的分桶哈希表(仅供练习)。哈希表结构定义为:

Bucket我对单链接堆栈的简单实现在哪里。

put在表( , remove, )的几乎所有方法中,get我都将获取要插入密钥的存储桶(从中删除,查找),因此我为此提取了一个方法:

我返回对存储桶的引用,因为我不想将它移出buckets哈希表的 Vec。我返回一个可变引用,因为我要改变返回的存储桶(例如,在向其中插入一个新条目(键值对)时)。

上面的代码可以编译。

但是,如果我去掉中间变量index并计算[]括号内的索引,如下所示:

我会得到这个借用错误:

我认为上面的两个代码片段是等价的。它们有什么不同,为什么第一个编译,为什么第二个不编译?

编辑:我认为self.buckets第一个代码片段中的不可变借用超出了范围,并在带有 的行的末尾“无效” let index = ...;,因此当方法返回时,没有对self.bucketsleft 的共享引用;在第二个片段中,self.buckets生命的不可变借用直到方法返回(因此在那一刻共享和可变引用共存)。如果这是正确的,为什么会这样?为什么在第二种情况下self.buckets到达]括号时,不可变借用不会“无效”,而是为整个表达式(整个返回线)而存在?

0 投票
1 回答
114 浏览

rust - 借用变量时的 Rust 生命周期语法

刚接触 Rust 并试图自学等等。我被困在一个终生的问题上。我能找到的最接近的已经发布的问题是:

参数要求 _ 被借用为 'static - 我该如何解决这个问题?

我正在玩的小项目定义了两个结构,Agent并且Item.

Agent除其他外,该结构包含以下行:

pub inventory: HashMap<String, &'static Item>,

此外,我已经实现了这段代码:

我写了一个单元测试,其中包括这一行

我知道某处有错误,因为编译器告诉我:

我将test_item作为引用传递take_item()(或者更确切地说,如果我正确使用行话,take_item()则是“借用” )。test_item这似乎是我的错误的根源,但在我之前链接的帖子中,作者能够通过调整包含引用的 Option<> 的生命周期来解决问题,据我所知。在我的示例中,我只是对test_item. 是否像其他作者那样包含推荐的方法?

生命'static周期意味着test_item只要单元测试正在运行,它将基本上存在?

我认为我的主要问题归结为,必须take_item()借用什么语法test_item才能使我的代码正确?我是否正确地考虑了这一点?

感谢您的任何建议。

0 投票
1 回答
28 浏览

rust - 对取自向量的对象进行变异

我无法解决一个明显的简单问题。

基本上我想将一个结构的实例推送到一个向量中,以便稍后将其取出,并通过调用为该结构实现的函数来修改对象。

为了简化案例,我创建了以下测试代码,这在我看来反映了相同的问题。

这有编译错误

然后我尝试了无穷无尽的变体,比如

... 或者 ...

实际上,上面显示的代码是我最初想做的代码的简化。

上面的代码带来了以下错误...

但在我看来,它总是有相同的根本原因,但我还没有弄清楚该怎么做。

0 投票
1 回答
48 浏览

rust - 借用数据的解构如何在编译时工作?

我一直在使用解构来创建对嵌套数据的引用,只是为了练习。我创建了一个使用解构来分解借来的元组的方法:

如果我添加let () = xprint_strings()函数的第一行,编译器会告诉我 x 有 type &String。这使我相信这是deref coercion的一个实例,编译器正在将&(String, String)frommain()转换为 a(&String, &String)以用于print_strings().

但是后来我查阅了文档,tuple没有找到Deref. 所以我的问题是,编译器如何扩展这段代码?

我的假设是会发生这样的事情:

编辑:

我想这不能解除强制,因为函数的签名与传入的参数相匹配main()