英文:
how to rephrase this code to get past clippy::manual_let_else
问题
以下是您要翻译的内容:
升级了 msrv 后,我得到了这个错误(在一个我不拥有的项目中,只是进行 msrv 升级,所以移除 'pedantic' 是不可以的)
error: this could be rewritten as `let...else`
--> asyncgit/src/sync/config.rs:99:2
|
99 | / let entry = match entry_res {
100 | | Ok(ent) => ent,
101 | | Err(_) => return Ok(None),
102 | | };
| |______^ help: consider writing: `let Ok(ent) = entry_res else { return Ok(None) };`
在这段代码上
let entry_res = cfg.get_entry(key);
let entry = match entry_res {
Ok(ent) => ent,
Err(_) => return Ok(None),
};
get_entry
返回一个 Result<T,...>
建议的修复不是有效的代码 - 除非我漏掉了一些显而易见的东西
编辑。当我说不是有效的代码时,我的意思是它不能编译,我确信语法是正确的,这是我的错,因为我不能理解它试图做什么。但这绝对是 clippy 的一个 bug。
编辑2:显然是一个已知的 bug https://github.com/rust-lang/rust-clippy/issues/10171
英文:
after some upgrade of msrv I get this (In a project I dont own, just doing the msrv upgrade, so removing the 'pedantic' is not OK)
error: this could be rewritten as `let...else`
--> asyncgit/src/sync/config.rs:99:2
|
99 | / let entry = match entry_res {
100 | | Ok(ent) => ent,
101 | | Err(_) => return Ok(None),
102 | | };
| |______^ help: consider writing: `let Ok(ent) = entry_res else { return Ok(None) };`
on this code
let entry_res = cfg.get_entry(key);
let entry = match entry_res {
Ok(ent) => ent,
Err(_) => return Ok(None),
};
get_entry
returns a Result<T,...>
The suggested fix is not valid code - unless I missed something obvious
Edit. When I say not valid code, I mean it won't compile, I am sure the syntax is correct and that it's my fault for not being able to follow what it's trying to do. But it's for sure a clippy bug
EDIT2 : apparently a known bug https://github.com/rust-lang/rust-clippy/issues/10171
答案1
得分: 1
The suggested fix is not valid code - unless I missed something obvious
建议的修复不是有效的代码 - 除非我漏掉了什么明显的东西
The suggested fix seems to have a pretty simple error (which you should report): it should be
建议的修复似乎有一个相当简单的错误(你应该报告它):应该是
let Ok(entry) = entry_res else { return Ok(None) };
Otherwise it creates the wrong top-level binding (ent
rather than entry
).
否则,它会创建错误的顶级绑定(ent
而不是 entry
)。
Aside from that, the suggested code has been valid code since 1.65.0, released November 2022 (and longer than that on nightly).
除此之外,建议的代码从1.65.0版本开始是有效的代码,于2022年11月发布(在夜间版上更长时间有效)。
Though it is possible clippy does not properly take MSRV in account, I've no idea.
尽管可能 clippy 没有正确考虑到 MSRV,但我不清楚。
英文:
> The suggested fix is not valid code - unless I missed something obvious
The suggested fix seems to have a pretty simple error (which you should report): it should be
let Ok(entry) = entry_res else { return Ok(None) };
Otherwise it creates the wrong top-level binding (ent
rather than entry
).
Aside from that, the suggested code has been valid code since 1.65.0, released November 2022 (and longer than that on nightly).
Though it is possible clippy does not properly take MSRV in account, I've no idea.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论