问题标签 [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.
rust - Rust 错误:在删除可变借用后发生借用
我的测试代码:
rustc 说:
但是在借用inc
之前手动删除,不是吗?println!
c
那么我的代码有什么问题?请帮忙。
rust - 借用/移动字段似乎移动了整个结构
我面临一个问题,我有一个结构(称为HomotopyOptimizer
),它有许多字段(有些是借来的)。里面有HomotopyOptimizer
一个带参数的方法&self mut
。
我所做的是,我将结构中的一些字段借给其他功能或转移它们的所有权,因为我将不再需要它们。
让我用一张图描述一下情况(我会在最后提供代码):
MyHomotopyOptimizer
有两个字段:(i)一个 typeHomotopyProblem
和(ii)一个 type &Cache
。
这些又是具有某些字段的结构。特别是,该HomotopyProblem
字段具有三个字段。
Problem
我需要使用 of 的字段HomotopyProblem
并通过借用type 的字段来构造一个类型的结构Cache
,self
但是,Rust 抱怨我不能借用它,因为self本身之前已经被借过(或者至少看起来如此)。
我的主要问题是我是否可以在不移动或借出结构本身的情况下移动结构字段的所有权。
让我以相反的顺序展示我的代码。首先是我得到编译错误的函数:
我收到以下错误:
为了完整起见:HomotopyOptimizer的定义是
它的构造函数是
HomotopyProblem的定义是
它的构造函数是
rust - 当 Rust 中一个值遮蔽另一个值时,堆栈上会发生什么?
我正在阅读Mastering Rust。第一章末尾有一个练习,其中提供了示例代码,任务是修复它,使用通常非常有用的编译器错误消息进行迭代。
我期待以下是一个错误,但它不是:
对于完整的上下文,我将整个代码放在一个 gist中。这是我修复后的代码,相关的行是 37 和 38。但是它需要提供一个文本文件作为参数。
我期待一个错误,因为line
它在堆栈上(至少指针是)。还是可以无怨无悔地销毁和更换,对吗?
关于内存管理和堆栈的幕后发生了什么?我认为这line
实际上是对字符串(一种&str
类型)的引用。因此,这很好,因为在任何一种情况下,指针本身 - 堆栈上的对象 - 只是 a usize
,因此两个line
对象在堆栈上的大小相同。
我可以用不同尺寸的东西来做这个吗?第二行是否可以说:
在这种情况下,对象本身在堆栈上,并且它可能大于usize
.
rust - 有什么办法可以同时不可变和可变地借用 RefCell 吗?
我有一段代码需要对列表进行操作。此列表包含来自其他来源且需要处理并最终删除的项目。该列表还传递给多个函数,这些函数决定是添加还是删除项目。我创建了一个反映我的问题的示例代码:
这在运行时恐慌:
我想我理解这个问题:我有两个不可变的借用,然后第三个是可变的。根据 Rust 文档,这是不允许的:许多不可变借用或单个可变借用。有没有办法解决这个问题?
rust - 遍历包含在 Rc 中的链接结构并更新它们
我需要在 Rust 中实现 A* 寻路算法。该算法处理特定单元格并使用parent_cell
字段相互链接。最后,当找到目标单元格时,路径就是从目标单元格到起始单元格的路径。我需要捕获路径中的每个单元格Vec
。我创建了一段简化的代码来反映我的问题:
这不起作用,因为借用检查器妨碍了我:
我尝试&
按照编译器的建议使用借用,但感觉这不是正确的方法。
memory - 为什么 Rust 会重用具有相同值的内存
示例代码:
如果第三个分配包含&3
然后代码输出:
如果第三个赋值包含&2
(与第二个赋值相同的值),则代码输出:
如果第三个赋值包含&5
(与第一个赋值相同的值),则代码输出:
为什么rust不释放内存而是在赋值相同的情况下重用它,否则分配一个新的内存块?
rust - 在 rust 中将 Vec<&str> 转换为 Vec<&CStr>
看看这个函数:
它接受 aVec<&str>
并将其作为命令执行。我无法将其转换为Vec<&CStr>
(这是execv
需要的)。编译器针对以下操作报告此错误map
:
如何修复此错误?
rust - Rust - 为什么借用 &mut 两次时它不会给我一个错误
我正在查看这个 rust 文档 https://doc.rust-lang.org/1.30.0/book/2018-edition/ch04-02-references-and-borrowing.html
当我借用 &mut 两次时,我不会看到任何错误(请参阅下面的代码),谁能告诉我为什么?
rust - 从parking_lot::RwLock 返回映射数据
我的结构在 a 中有一个向量parking_lot::RwLock
,并且一个成员函数必须从该向量返回一个受保护的元素:
(这是问题的简化核心,不是真正的代码)
代码通过了类型检查,但我得到了f
. 有没有办法修改代码以使其正确并通过借用检查器?
错误是: