struct MyBox {
i: i32,
}
impl MyBox {
fn get_ref(&mut self) -> Option<&i32> {
None
}
fn try_get_ref(&mut self) -> &i32 {
if let Some(val) = self.get_ref() {
return val;
}
&mut self.i // cannot borrow `self.i` as mutable more than once at a time
}
}
具体报错在这里 https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=6c4fa376370bdc0e93c9d09a94ee94e7
请问下要怎么更容易理解报错的原因呢?
1
共 8 条评论, 1 页
评论区
写评论这个没办法,所以map直接提供了enpty_or_insert()之类的方法,就是为了避免这个问题
这样应该是可以了,不够如果get_ref返回的是Some(&self.i)的话,还是不能编译吧,现在的编译器在推导这个生命周期的时候应该就是有缺陷的,TinusgragLin贴的帖子里有说明
--
👇
全称量词是儿子: 这样标注一下,你估计就明白了,只需要让self的可变引用在函数结束后同时结束掉他self的可变借用就行,也符合你的需求
这样标注一下,你估计就明白了,只需要让self的可变引用在函数结束后同时结束掉他self的可变借用就行,也符合你的需求
学到了,已订阅
--
👇
TinusgragLin: issue 和 rfc 我相信应该是之前遇到过或者就是搜到的吧。能知道这篇文章是因为我关注了 reddit 的 rust 板块,又订了 reddit 的每日邮件推送,所以时不时会看到一些 rust 板块大家都在讨论的热帖。还有一个每周的 rust “新闻周刊” https://this-week-in-rust.org/,它也会挑出一些之前一周值得关注的东西,不过大概是因为这个太“干”了,而 reddit 的每日推送中会夹杂着我关注的游戏社区的推送,这个一周一次的推送我反而会遗漏掉几次[捂脸笑]。
issue 和 rfc 我相信应该是之前遇到过或者就是搜到的吧。能知道这篇文章是因为我关注了 reddit 的 rust 板块,又订了 reddit 的每日邮件推送,所以时不时会看到一些 rust 板块大家都在讨论的热帖。还有一个每周的 rust “新闻周刊” https://this-week-in-rust.org/,它也会挑出一些之前一周值得关注的东西,不过大概是因为这个太“干”了,而 reddit 的每日推送中会夹杂着我关注的游戏社区的推送,这个一周一次的推送我反而会遗漏掉几次[捂脸笑]。
--
👇
ZZG: 为啥大佬们经常能甩一个官方issue,rfc或者blog出来,是真的会经常没事就翻翻看这些地方吗?
--
👇
TinusgragLin: 我记得之前官方对这个问题有一个 update,不知道 2024 版会不会囊括关于这个的一些成果。
为啥大佬们经常能甩一个官方issue,rfc或者blog出来,是真的会经常没事就翻翻看这些地方吗?
--
👇
TinusgragLin: 我记得之前官方对这个问题有一个 update,不知道 2024 版会不会囊括关于这个的一些成果。
我记得之前官方对这个问题有一个 update,不知道 2024 版会不会囊括关于这个的一些成果。
自己搜到这个,感觉是同一个问题
https://www.reddit.com/r/rust/comments/qi3ye9/why_does_returning_a_value_mess_with_borrows/
使用 rustc -Z polonius 也确实能通过编译,此贴终结~