处理大量if-let-else代码的惯用Rust方法是什么?

时间:2017-12-22 21:30:12

标签: rust

我试图找出用户的当前主目录(玩具项目,学习Rust),这是我目前的代码:

let mut home_dir = if let Some(path) = env::home_dir() {
    if let Some(path_str) = path.to_str() {
        path_str.to_owned()
    } else {
        panic!("Found a home directory, but the encoding of the filename was invalid")
    }
} else {
    panic!("Could not find home directory for current user, specify prefix manually");
};

我来自一个严密管理语言的背景,所以也许这就是为什么这在我看来是一种反模式,但我试图理解我是否有更好的方法来做到这一点。

在Kotlin中,我会使用以下方式处理这种情况:

val homeDir = env.getHomeDir()?.toString() ?: throw RuntimeException(...)

?宏在Rust中的工作方式要求我使用一个返回Result的函数,我相信main()没有,并且它不一定有意义无论如何。有什么指针吗?

0 个答案:

没有答案