像 Option<T> 这样的东西有 Rust 变量命名约定吗?

Bru*_*uce 5 convention variables rust

在以下情况下是否有变量命名约定?我发现自己必须有两个名字,一个是可选的,一个是未包装的。

let user = match optional_user {
    Some(u) => {
        u
    }
    None => {
        new("guest", "guest").unwrap()
    }
};
Run Code Online (Sandbox Code Playgroud)

min*_*ree 3

我不确定是否有约定,但我经常看到(并使用)maybesieOption

let maybe_thing: Option<Thing> = ...
let thing: Thing = ...
Run Code Online (Sandbox Code Playgroud)

另外,就您在这种情况下使用u和而言,两个地方都user使用就可以了。userIE

let user = match maybe_user {
    Some(user) => user,
    ...
Run Code Online (Sandbox Code Playgroud)

这是因为匹配表达式将在赋值之前进行计算let

然而(稍微偏离主题)@Manishearth 是正确的,在这种情况下,使用or_else. IE

let user = maybe_user.or_else(|| new("guest", "guest")).unwrap();
Run Code Online (Sandbox Code Playgroud)

我建议也熟悉其余的Option方法,因为它们非常适合减少match样板代码。