问题标签 [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.
compiler-errors - 调用闭包,即在集合中,与集合的所有者
考虑以下代码:
无法编译,因为我试图传递e
给f
:
不能借用
e
为可变的,因为e.key_map
它也被借用为不可变的
但是当借完的时候e.key_map
我就再也无法接触到了f
。那么我如何准确地调用地图内的闭包呢?
rust - 使用构建器模式的所有权错误
我尝试按照Builder 模式编写 API,该示例已大大简化,但编译器仍然抱怨借用值的寿命不够长。
产生的错误信息是:
都使用两个班轮
并直接打印 MediaType
做工作。为什么借用检查器会抱怨,尽管在直接使用该值并且我遵循构建器模式示例时它没有抱怨?
rust - Rust:ssh2::Session 生命周期错误
更新:相关问题有助于理解问题所在,但不能解决问题。
我现在明白我不能将Sftp
对象保存在同一个结构中,并在需要时Session
更好地生成。Sftp
新代码是:
输出略有不同的错误。新的错误是sftp
在get_file
方法中,寿命不够长。那么我怎样才能让它活得足够长以返回 aFile
并在调用方使用它呢?
老问题
以下代码尝试在 rust 库ssh2中创建一个包含 SFTP 连接所需的所有数据的结构。结构被给出SftpClient
并且new
函数应该生成它。
当我编译这段代码时,rustc 抱怨说它的s
寿命不够长:
我不明白为什么s
它的寿命不够长,因为它SftpClient
就像Sftp
结构一样。据我了解,他们都应该过着幸福的生活,直到SftpClient
被淘汰。
rust - 为什么我不能在同一个结构中存储一个值和对该值的引用?
我有一个值,我想以我自己的类型存储该值和对该值内的某些内容的引用:
有时,我有一个值,我想将该值和对该值的引用存储在同一结构中:
有时,我什至没有参考价值,我得到同样的错误:
在每种情况下,我都会收到一个错误,即其中一个值“寿命不够长”。这个错误是什么意思?
struct - 将引用存储在结构中
我正在尝试为 Rust 的 gnuplot lib 构建一个包装器结构。
我想在同一个 2D 轴对象中绘制多组线,因此我需要保持Axes2D
周围。
我怎样才能修复这个结构?figure
和字段将与结构本身axes
一样长。plot
这失败并出现以下编译器错误:
我尝试'a
在结构、字段和 impl 上添加生命周期,但这给了我不同的错误。由于我不确定自己在做什么,所以我想知道是否有人可以解释如何实现这一目标。
rust - 展开时无法移出共享引用后面的值
这是我试图执行的代码:
(在锈操场上)
我在早期版本的 Rust 中收到以下错误:
在更现代的版本中:
我看到已经有很多关于借用检查器问题的文档,但是在阅读之后,我仍然无法弄清楚问题所在。
为什么这是一个错误,我该如何解决?
rust - 为什么我不能保留一个盒子?
考虑以下代码(在操场上):
我收到以下错误消息:
我不明白为什么。好的,当我调用 时is_even
,我将所有权授予此函数,但在该函数结束时is_even
不再需要所有权。这是一个不可变(只读)的所有权转移,所以我们确定它不会在main
保留时被删除integer
-> 使用它似乎是安全的。
还是有这个错误。为什么以及解决方法是什么?
rust - 与 Rust 借用检查器战斗
这段代码看起来对我来说可以正常工作,但 rust 借用检查器不喜欢它:
我想我不能使用单独的函数,而是使用两个 for 循环部分,但这不是惯用的 Rust,也不是好的编码习惯。事实上,我已经尝试过了,但它只是告诉我我正在使用移动值。以下是我遇到的一些错误:
vector - 以相同的方法在向量中查找和推送元素
我觉得我的实现太麻烦了,我想有更好的方法来实现这个简单的东西。
我有一个Grid
表示游戏板的结构,我有一个将单元格添加到网格中的方法,此方法 ( add_cell
) 在添加之前检查网格中是否已存在单元格。
我在声明之后放置了假范围,is_not_yet_in
以避免在可变/不可变借用self.cells
. 无论如何,我认为这个技巧可以避免使用不同的方法。