问题标签 [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.
pattern-matching - 将切片模式与字符串切片一起使用
我正在尝试在String
s 的切片上使用切片模式。这不起作用,因为 Rust 不String
将切片的 s 与&str
文字匹配。我不知道如何将 s 的切片转换为String
s 的切片&str
。
rust - 借来的值不够长,试图公开迭代器而不是数据的具体 Vec 表示
我有一个表示数据网格的结构,以及行和列的访问器。我正在尝试为返回迭代器而不是 Vec 的行和列添加访问器。
这两种功能rows_iter
都有cols_iter
相同的问题:error: borrowed value does not live long enough
. 我已经尝试了很多东西,但把它缩减为最简单的东西在这里发布。
rust - 旋转变量时“无法移出变量,因为它是借来的”
我正在编写一个程序,该程序写入文件并不时旋转它正在写入的文件。当我检查旋转文件时,我似乎无法更改文件,因为它是由我的结构借用的。即使我drop
是结构的实例,我似乎也无法重新获得文件的所有权来重命名它。这是我的例子:
我知道我可以通过将文件创建移动到new
函数调用FileStruct
而不是使用中间变量file
来实现这一点,但我想知道为什么这种方法强制删除所有变量引用应该返回的所有变量不起作用。
rust - 当迭代器产生新向量时,生命周期要求冲突
我有一个Grid
这样的结构:
我正在尝试重写不同类型的迭代器(主要是作为练习,所以即使有“更好”的方法来解决这里提出的特定问题,我也想这样做)。
遍历行很容易;该raw
字段只是一个行向量,因此我每次都可以产生对每个后续行的引用。
但是我在遍历列时遇到了困难。我尝试为每次调用构建一个新的 Vec next()
,但引用的寿命不够长 - 这是有道理的。下面的代码是尝试在迭代器结构中存储对临时 vec 的引用,希望能够继承生命周期。但这也不起作用:
这给出了错误:
“帮助”行没有帮助,因为该建议与特征不兼容。
rust - 将集合移出上下文
我正在尝试使用生命周期来实现一些特征,但像往常一样,我正在与借用检查器作斗争。
我的性格是这样的:
游乐场链接
这给出了以下错误:
我想我明白为什么会发生这种情况:我在借用自我,所以我无法复制数据。我该如何解决这个问题?
rust - 为什么这个变量的寿命不够长?
我正在尝试从中提取一个可选的 arg getopts
,并且获取一个借来的值对于变量来说并没有足够长的时间s
。
代码:
错误:
无论.clone()
,.to_owned()
或.to_str()
任何其他我想尝试的东西都会发生这种情况。
rust - 尝试两次使用相同资源时的“使用移动值”
这是代码:
如果有问题的行被注释掉,代码编译得很好。如果我取消注释,我开始收到错误消息:
我知道问题是我stage_dir
第一次使用它时会移动,但我看不到如何stage_dir
在这两个子文件夹之间共享,因为我需要在测试中访问它们。
我试着玩,&stage_dir
但这产生了一些对我来说更加模糊的警告。
rust - 在我克隆它之前,向量的寿命不够长
我不明白为什么v
片段的寿命不够长(2)
,但它在其他情况下有效。如果我不需要clone
变量 in (1)
,为什么我需要克隆它才能让第二种情况起作用?
rust - 从结构字段分配变量时“无法移出借用的内容”
我正在学习 Rust,我正在与借用检查器作斗争。
我有一个基本Point
结构。我有一个scale
函数可以修改该点的所有坐标。我想从另一个名为的方法调用此方法convert
:
现在我有以下错误:
我究竟做错了什么?
reference - 当结构的一个实例需要对另一个实例的引用时的生命周期问题
我正在尝试使用 SFML 和 Rust 编写一个简单的游戏,但事实证明借用检查器是我在这段旅程中最大的敌人。
在很多情况下 SFML 需要引用另一个对象。在下面的代码中,我需要对 Font 的引用,否则 Text 不会向用户显示任何内容。
问题是,我已经尝试了很多东西,而引用本身的寿命却不够长。如果我在 draw 方法上创建 Text 对象,它显然可以工作,但我想避免在应用程序的主循环中创建东西。
这是我应该看看不安全操作的情况吗?是否有满足我需求的 Rc、RefCell、Box 等的组合?
如果可能的话,请尝试向我解释我应该做什么以及我目前的心态有什么问题。