Rust 最优雅的异常处理方式是什么?

2022-03-27 01:02:31 +08:00
 Kasumi20

相比会产生嵌套地狱的 match 来说, 我更喜欢 if 这种方式, 有没有什么更优雅的方式?

fn serv(host: &str, port: u16) {
    let server = std::net::TcpListener::bind(format!("{}:{}", host, port));
    if server.is_err() {
        println!("{}", server.unwrap_err());
        return;
    }
    let server = server.unwrap();
    ...
}
2172 次点击
所在节点    Rust
6 条回复
Kilerd
2022-03-27 01:37:17 +08:00
lib 用 thiserror ,bin 用 anyhow
jedrek
2022-03-27 11:53:17 +08:00
不处理的异常和 None 就返回,用 ? 精简代码
1more
2022-03-27 16:06:57 +08:00
我也想问,等一个答案
dorentus
2022-03-28 07:02:32 +08:00
dorentus
2022-03-28 09:50:15 +08:00
DonkeyBenjamin
2022-04-03 23:49:20 +08:00
1. ripgrep 作者的看法: https://blog.burntsushi.net/rust-error-handling/
2. 参考 rust for rustaceans

总而言之,application -> anyhow
library -> thiserror

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/843118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX