如何为函数参数中的绑定提供默认值?

dro*_*te7 1 rust

在不包含要绑定的字段的情况下,如何为绑定提供默认文字值?

#[derive(Debug)]
struct Descriptor {
    name: String,
    note: Option<String>,
}

fn func2(
    (d @ Descriptor {
        note: (Some(note_content) | None),
        ..
    }): &Descriptor,
) {
}
Run Code Online (Sandbox Code Playgroud)

note_content这不会编译,因为在这种情况下没有绑定None。我想指定一个,但我不知道正确的语法。

这并不能解决问题:

Some(note_content) | None, note_content @ "default literal".to_string()
Run Code Online (Sandbox Code Playgroud)

那里应该写什么?

Sta*_*eur 6

函数中的模式必须是无可辩驳的。无法在函数 \xe2\x80\x94 的参数中进行模式匹配,这没有意义。

\n

人们使用这个功能来解构无可辩驳的模式,比如元组。例如:fn foo((a, b): (&Descriptor, &Descriptor)),还有其他用例,但它们是有限的。

\n

您也可以执行类似的操作,删除一层命名:

\n
fn func2(Descriptor { name, note }: &Descriptor) {\n    let note = note.as_deref().unwrap_or("default literal");\n    println!("{}, {}", name, note);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

您无法匹配可反驳的模式,Option并且无法像您要求的那样给出默认值。

\n