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

rust - Rust 校验借用整个HashMap,不校验key,有什么好的办法吗?

我想将 HashMap<u64, Vec> key=1 的元素移动到 key=2

得到错误:

Rust 检查借用整个 HashMap,而不是检查密钥。有什么好办法吗?

0 投票
1 回答
78 浏览

rust - Rust async-std 奇怪的语法为了解决读写借用的冲突

我正在尝试用 写一个tcp服务器async-std,为了解决读写借用检查的问题,我发现了一个奇怪的方法:

奇怪: let (reader, mut writer) = (&stream, &stream); // Stange here <----- 我按照这个方法写了一个验证程序:

得到错误:

谁能解释一下?

0 投票
2 回答
94 浏览

rust - 在 trait 默认方法中多次自我借用

我遇到了借用检查器的问题。我有一个特征 ( Physics),它有 getter (eg velocity) 和 setter (eg velocity_mut)。它还具有默认方法accelerateapply_force并且使用 getter 和 setter。为什么多次借用不好,有什么方法可以解决这个问题?这是一条错误消息:

0 投票
1 回答
205 浏览

rust - 为具有生命周期的类型实现 Borrow trait

我正在尝试使用。我的程序中的“键”的强类型包装器,这样我就不会将任意字符串误认为是键。我有:

我有一个HashMap<Key, _>, 并且我想通过对键类型的引用来查找值(即不必拥有该字符串)。看来我需要做的是:

  1. 为我的密钥创建一个“ref”类型:

(实际上我想要KeyRef<'a>(&'a str),但使用String可以作为一个更清晰的例子)

  1. 实施Borrow<KeyRef<'_>> for Key

我已经尽力了,这是一个游乐场链接

我最明确的尝试(注释所有生命周期)是:

这给了我错误:“方法的生命周期参数或边界borrow与特征声明不匹配”。

直觉上感觉这应该是可能的:

  • KeyRef 持有生命周期的引用'a,因此 KeyRef 的任何值都不能超过生命周期'a
  • in fn borrow<'b>(&'b self),由于上述原因,'b不能大于'a

但是编译器似乎不喜欢我明确尝试证明 (with where 'b: 'a),并且将其关闭我得到“由于要求冲突,无法推断借用表达式的适当生命周期”

0 投票
0 回答
76 浏览

rust - 将所有权与向量解耦

我正在为具有共享引用的对象创建工厂方法。编译器看不到来自 a 的对象Vec没有在本地范围之外被引用,并且新创建的对象没有链接到原始对象。

我该如何解决这个问题,我错过了什么?

不,对不起,我还是不太明白。

这是一个更简单的例子,没有向量:

出于某种原因,对对象的方法调用将使编译器假定我有对该对象的引用,尽管c没有引用b1. 我该如何解决?

如何声明combine()-method 是不可变的?

0 投票
1 回答
109 浏览

rust - 参考“静态”的寿命不够长?

考虑下一个代码:

我创建了一些static变量,然后将一些函数应用于它的引用并得到结果。它似乎工作得很好。至少它成功编译。

现在我正在尝试添加下一个抽象级别。事情变得越来越奇怪......

对我来说,它看起来几乎是相同的代码。但是 Rust 无法编译它。我真的不明白为什么会这样,我应该如何重写我的代码来编译。

0 投票
1 回答
197 浏览

rust - Rust double mut 在循环中借用

寻找一种方法来推动 Vec<Vec<>> 和它的内部 Vec<>。我确实理解它为什么会失败,但仍然很难找到一些优雅的方法来解决它。

0 投票
1 回答
172 浏览

rust - Vec 是如何实现 BorrowMut 的?

我在标准库文档中运行了以下示例,出现了一个难题。

我找到了一个trait的实现BorrowMutVec,我不明白它是如何工作的。比如下面的代码表明No.1有效,为什么No.2无效,泛型T有什么作用?</p>

0 投票
1 回答
90 浏览

rust - 了解克隆借用

我对 rust 还很陌生,仍在学习 rust 所有权模型。我正在编写一段代码,其中我持有对数据结构中某个点的引用。我想存储此数据结构的多个副本,其中每个副本上的参考点包含不同的值。我(试图)通过创建对数据结构内部点的可变引用来解决这个问题,并在每次更新引用后创建原始数据结构的克隆。

我能够创建这个简单的示例,该示例类似于我正在尝试执行的操作并产生相同的错误。

这会产生以下错误

在方便的 rust book 的帮助下,我能够解释错误消息。我相信这告诉我,我不能同时拥有一个可变引用和一个不可变引用。迭代地创建数据结构的副本并更新所述数据结构中的引用的 rust 惯用方法是什么(或是否存在)?

编辑:上面的例子可能太小了,没有突出我遇到的实际问题。编写如下示例的生锈惯用方式是什么。

0 投票
0 回答
100 浏览

rust - 循环内可变借用

我有一个元组向量,每个元组包含两个字符串。我想将两个字符串(其中之一)作为可变引用传输到哈希图中。另一个字符串也被传输,但不必是可变的。背景是我想稍后用另一个字符串的值覆盖一个字符串。

给定以下代码:

不幸的是借用检查器不允许这样做,并给我两个错误消息:

我理解这个问题,但不幸的是我不知道如何最好地解决它。

有人可以帮我解决这两个问题吗?

游乐场链接