gpt4 book ai didi

rust - 如果即使使用 #![feature(nll​​)]

转载 作者:行者123 更新时间:2023-11-29 08:13:50 24 4
gpt4 key购买 nike

<分区>

我正在处理一个大文件,但这是一个导致同样问题的小玩具示例。抱歉,如果示例本身没有意义。

#![feature(nll)]
struct S(i32);

impl S {
fn foo(&mut self) -> Option<&i32> {
if let Some(val) = self.bar() {
return Some(val);
}
let y = &mut self.0;
None
}

fn bar(&mut self) -> Option<&i32> {
None
}
}

fn main() {
S(0).foo();
}

这没有通过借用检查器:

error[E0499]: cannot borrow `self.0` as mutable more than once at a time
--> test.rs:9:17
|
6 | if let Some(val) = self.bar() {
| ---- first mutable borrow occurs here
...
9 | let y = &mut self.0;
| ^^^^^^^^^^^ second mutable borrow occurs here
|
note: first borrowed value must be valid for the anonymous lifetime #1 defined on the method body at 5:5...
--> test.rs:5:5
|
5 | / fn foo(&mut self) -> Option<&i32> {
6 | | if let Some(val) = self.bar() {
7 | | return Some(val);
8 | | }
9 | | let y = &mut self.0;
10| | None
11| | }
| |_____^

这不应该是有效的(即使没有 #![feature(nll​​)])因为它在 if let block 中返回吗?值得注意的是,如果我将 if let block 更改为以下内容,它可以正常编译

if self.bar().is_some() {
return self.bar();
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com