问题标签 [borrowing]
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 - 如何为枚举变体实现 Borrow,以便可以使用字符串切片作为 HashMap 的键?
在以下场景中:
我可以通过使用Borrow
特征来实现这一点,所以我不需要 a &Key
,只需要 a 就&str
可以了:
但是,当我的密钥是枚举时,无法实现Borrow
:
是否有一种符合人体工程学的方法来实现get_from_map
,无需克隆key
,以便它以某种方式只查找Text
键?
我的第一直觉是实现Borrow
一个BorrowedKey
新类型,但这似乎不起作用,因为Borrow
需要返回一个引用。
reference - 多个生命周期和移动:对借用的“x”的赋值发生在这里
我有一个带有函数的结构next()
(类似于迭代器,但不是迭代器)。该方法返回修改后的下一个状态(保留原始状态)。所以:fn next(&A) -> A
。
我从一个不需要生命周期的简单结构开始(示例中的结构 A),然后扩展它以添加对新结构(结构 B)的引用。
问题是我现在需要为我的结构指定生命周期,并且由于某种原因我的方法next()
不再起作用。
我怀疑每次迭代的新结构的生命周期仅限于创建它的范围,我不能将它移出这个范围。
是否可以保留我的next()
方法的行为?
错误是:
vector - 无法使用 Vec 两次,我不能借用它
我试图实现 Rosetta Code 密码生成器:
Rust 不允许我使用借用值或直接值:
帮助消息说我应该删除借用,因为类型不匹配,但删除它后仍然出现错误,因为值已被移动。
rust - 在盒装的未来使用参考变量时“需要显式生命周期”
我正在尝试使用在中创建的结构main()
并将其传递给返回 boxed 的函数Future
。但是,我遇到了生命周期和借贷问题,似乎无法干净地解决这个问题。
这是我的结构和功能:
编译时出现以下错误:
我想发生错误是因为SomeStruct
在s 范围内Future
使用并且可能在main()
s 范围之外使用,因此编译器要求我将生存期更改为'static
. 这是我到目前为止尝试的(不成功):
- 将生命周期更改
'static
为编译器建议的,这会在main()
. val
按照编译器的建议添加移动ok(20).and_then(move |val| {
,这会在第二次调用get_future()
.- 使用lazy_static板条箱显式初始化
SomeStruct
为静态(如此处所建议的),但是我在尝试时遇到了宏错误。
整个例子可以在这里找到。我省略了一些细节来创建一个最小的例子。使用tokio-core
和会出现问题futures = "0.1"
。不幸的是,由于依赖另一个库,迁移到版本"0.2"
不是一种选择。
rust - 为什么重新借用仅适用于取消引用的指针?
这个问题和代码改编自Why does Creating a mutable reference to a dereferenced mutable reference work? . 那里的答案解释了重新借用,但没有解释围绕它的约定的原因。
下面的两个调用test
似乎等效,为什么只有第一个有效?
rust - “使用抵押移动价值”
我有以下代码(您可以在 play.rust-lang.org 上尝试):
(这是一个例子,不是真实的,如果它看起来没用也不要担心)
对我来说看起来不错,但是借用检查器给了我以下错误:
这个错误的原因是什么,我该如何解决?
memory - 无法移出作为参数传递的可选成员的借用内容
我find
在基本的内存存储解决方案上定义了一个函数。我试图通过创建一个struct
被调用的方法来灵活地传递条件搜索选项SearchOpts
:
我不知道这是否是实现此类功能的最佳方式,但我也不明白在这种情况下如何取悦借用检查器(这是我想首先学习的东西)。
iterator - 尝试遍历网格结构会导致“借用值的寿命不够长”
我正在尝试创建一个可以存储监视器位置数据的数据结构。
我采用的方法是每个屏幕都有对 4 个邻居的引用,这些邻居存储在HashMap<Direction, Rc<RefCell<Screen>>>
.
我正在努力解决的是如何在一个方向上“移动”/迭代,直到我到达网格的边缘:
我理解为什么会发生错误,但我不知道如何修复它。我试图克隆original_screen
and next
,但是编译器抱怨我试图设置original_screen
同时仍然借用它。