问题标签 [borrow-checker]

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 回答
50 浏览

compiler-errors - 调用闭包,即在集合中,与集合的所有者

考虑以下代码:

无法编译,因为我试图传递ef

不能借用e为可变的,因为e.key_map它也被借用为不可变的

但是当借完的时候e.key_map我就再也无法接触到了f。那么我如何准确地调用地图内的闭包呢?

0 投票
1 回答
188 浏览

rust - 使用构建器模式的所有权错误

我尝试按照Builder 模式编写 API,该示例已大大简化,但编译器仍然抱怨借用值的寿命不够长。

产生的错误信息是:

都使用两个班轮

并直接打印 MediaType

做工作。为什么借用检查器会抱怨,尽管在直接使用该值并且我遵循构建器模式示例时它没有抱怨?

锈游乐场

0 投票
1 回答
836 浏览

rust - HashMap 键的寿命不够长

我正在尝试使用 aHashMap<String, &Trait>但我有一条我不明白的错误消息。这是代码(操场):

这是我得到的错误:

这里发生了什么事?有解决方法吗?

0 投票
0 回答
311 浏览

rust - Rust:ssh2::Session 生命周期错误

更新:相关问题有助于理解问题所在,但不能解决问题。

我现在明白我不能将Sftp对象保存在同一个结构中,并在需要时Session更好地生成。Sftp新代码是:

输出略有不同的错误。新的错误是sftpget_file方法中,寿命不够长。那么我怎样才能让它活得足够长以返回 aFile并在调用方使用它呢?

老问题

以下代码尝试在 rust 库ssh2中创建一个包含 SFTP 连接所需的所有数据的结构。结构被给出SftpClient并且new函数应该生成它。

当我编译这段代码时,rustc 抱怨说它的s寿命不够长:

我不明白为什么s它的寿命不够长,因为它SftpClient就像Sftp结构一样。据我了解,他们都应该过着幸福的生活,直到SftpClient被淘汰。

0 投票
3 回答
42386 浏览

rust - 为什么我不能在同一个结构中存储一个值和对该值的引用?

我有一个值,我想以我自己的类型存储该值和对该值内的某些内容的引用:

有时,我有一个值,我想将该值和对该值的引用存储在同一结构中:

有时,我什至没有参考价值,我得到同样的错误:

在每种情况下,我都会收到一个错误,即其中一个值“寿命不够长”。这个错误是什么意思?

0 投票
0 回答
40 浏览

struct - 将引用存储在结构中

我正在尝试为 Rust 的 gnuplot lib 构建一个包装器结构。

我想在同一个 2D 轴对象中绘制多组线,因此我需要保持Axes2D周围。

我怎样才能修复这个结构?figure和字段将与结构本身axes一样长。plot

这失败并出现以下编译器错误:

我尝试'a在结构、字段和 impl 上添加生命周期,但这给了我不同的错误。由于我不确定自己在做什么,所以我想知道是否有人可以解释如何实现这一目标。

0 投票
2 回答
13439 浏览

rust - 展开时无法移出共享引用后面的值

这是我试图执行的代码:

在锈操场上

我在早期版本的 Rust 中收到以下错误:

在更现代的版本中:

我看到已经有很多关于借用检查器问题的文档,但是在阅读之后,我仍然无法弄清楚问题所在。

为什么这是一个错误,我该如何解决?

0 投票
2 回答
87 浏览

rust - 为什么我不能保留一个盒子?

考虑以下代码(在操场上):

我收到以下错误消息:

我不明白为什么。好的,当我调用 时is_even,我将所有权授予此函数,但在该函数结束时is_even不再需要所有权。这是一个不可变(只读)的所有权转移,所以我们确定它不会在main保留时被删除integer-> 使用它似乎是安全的。

还是有这个错误。为什么以及解决方法是什么?

0 投票
1 回答
493 浏览

rust - 与 Rust 借用检查器战斗

这段代码看起来对我来说可以正常工作,但 rust 借用检查器不喜欢它:

我想我不能使用单独的函数,而是使用两个 for 循环部分,但这不是惯用的 Rust,也不是好的编码习惯。事实上,我已经尝试过了,但它只是告诉我我正在使用移动值。以下是我遇到的一些错误:

0 投票
1 回答
1331 浏览

vector - 以相同的方法在向量中查找和推送元素

我觉得我的实现太麻烦了,我想有更好的方法来实现这个简单的东西。

我有一个Grid表示游戏板的结构,我有一个将单元格添加到网格中的方法,此方法 ( add_cell) 在添加之前检查网格中是否已存在单元格。

我在声明之后放置了范围,is_not_yet_in以避免在可变/不可变借用self.cells. 无论如何,我认为这个技巧可以避免使用不同的方法。