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

rust - Rust 错误:在删除可变借用后发生借用

我的测试代码:

rustc 说:

但是在借用inc之前手动删除,不是吗?println!c

那么我的代码有什么问题?请帮忙。

0 投票
1 回答
86 浏览

rust - 为什么没有发生借用重叠时会出现借用错误?

以下代码因借用错误而失败:

错误是:

为什么这里会出现借用错误?now.succ()返回一个新对象,看起来succ()调用应该返回新对象,在可变借用发生之前结束不可变借用replace

0 投票
0 回答
221 浏览

rust - 借用/移动字段似乎移动了整个结构

我面临一个问题,我有一个结构(称为HomotopyOptimizer),它有许多字段(有些是借来的)。里面有HomotopyOptimizer一个带参数的方法&self mut

我所做的是,我将结构中的一些字段借给其他功能或转移它们的所有权,因为我将不再需要它们。

让我用一张图描述一下情况(我会在最后提供代码):

借用检查器问题

MyHomotopyOptimizer有两个字段:(i)一个 typeHomotopyProblem和(ii)一个 type &Cache

这些又是具有某些字段的结构。特别是,该HomotopyProblem字段具有三个字段。

Problem我需要使用 of 的字段HomotopyProblem并通过借用type 的字段来构造一个类型的结构Cacheself但是,Rust 抱怨我不能借用它,因为self本身之前已经被借过(或者至少看起来如此)。

我的主要问题是我是否可以在不移动或借出结构本身的情况下移动结构字段的所有权。


让我以相反的顺序展示我的代码。首先是我得到编译错误的函数:

我收到以下错误:


为了完整起见:HomotopyOptimizer的定义是

它的构造函数是

HomotopyProblem的定义是

它的构造函数是

0 投票
1 回答
470 浏览

rust - 当 Rust 中一个值遮蔽另一个值时,堆栈上会发生什么?

我正在阅读Mastering Rust。第一章末尾有一个练习,其中提供了示例代码,任务是修复它,使用通常非常有用的编译器错误消息进行迭代。

期待以下是一个错误,但它不是

对于完整的上下文,我将整个代码放在一个 gist中。这是我修复后的代码,相关的行是 37 和 38。但是它需要提供一个文本文件作为参数。


我期待一个错误,因为line它在堆栈上(至少指针是)。还是可以无怨无悔地销毁和更换,对吗?

关于内存管理和堆栈的幕后发生了什么?我认为line实际上是对字符串(一种&str类型)的引用。因此,这很好,因为在任何一种情况下,指针本身 - 堆栈上的对象 - 只是 a usize,因此两个line对象在堆栈上的大小相同。

我可以用不同尺寸的东西来做这个吗?第二行是否可以说:

在这种情况下,对象本身在堆栈上,并且它可能大于usize.

0 投票
1 回答
587 浏览

rust - 有什么办法可以同时不可变和可变地借用 RefCell 吗?

我有一段代码需要对列表进行操作。此列表包含来自其他来源且需要处理并最终删除的项目。该列表还传递给多个函数,这些函数决定是添加还是删除项目。我创建了一个反映我的问题的示例代码:

这在运行时恐慌:

我想我理解这个问题:我有两个不可变的借用,然后第三个是可变的。根据 Rust 文档,这是不允许的:许多不可变借用或单个可变借用。有没有办法解决这个问题?

0 投票
0 回答
47 浏览

rust - 遍历包含在 Rc 中的链接结构并更新它们

我需要在 Rust 中实现 A* 寻路算法。该算法处理特定单元格并使用parent_cell字段相互链接。最后,当找到目标单元格时,路径就是从目标单元格到起始单元格的路径。我需要捕获路径中的每个单元格Vec。我创建了一段简化的代码来反映我的问题:

这不起作用,因为借用检查器妨碍了我:

我尝试&按照编译器的建议使用借用,但感觉这不是正确的方法。

0 投票
2 回答
279 浏览

memory - 为什么 Rust 会重用具有相同值的内存

示例代码:

如果第三个分配包含&3然后代码输出:

如果第三个赋值包含&2(与第二个赋值相同的值),则代码输出:

如果第三个赋值包含&5(与第一个赋值相同的值),则代码输出:

为什么rust不释放内存而是在赋值相同的情况下重用它,否则分配一个新的内存块?

0 投票
1 回答
250 浏览

rust - 在 rust 中将 Vec<&str> 转换为 Vec<&CStr>

看看这个函数:

它接受 aVec<&str>并将其作为命令执行。我无法将其转换为Vec<&CStr>(这是execv需要的)。编译器针​​对以下操作报告此错误map

如何修复此错误?

0 投票
1 回答
109 浏览

rust - Rust - 为什么借用 &mut 两次时它不会给我一个错误

我正在查看这个 rust 文档 https://doc.rust-lang.org/1.30.0/book/2018-edition/ch04-02-references-and-borrowing.html

当我借用 &mut 两次时,我不会看到任何错误(请参阅下面的代码),谁能告诉我为什么?

0 投票
1 回答
163 浏览

rust - 从parking_lot::RwLock 返回映射数据

我的结构在 a 中有一个向量parking_lot::RwLock,并且一个成员函数必须从该向量返回一个受保护的元素:

(这是问题的简化核心,不是真正的代码)

代码通过了类型检查,但我得到了f. 有没有办法修改代码以使其正确通过借用检查器?

错误是: