Rust 中返回 _ 意味着什么?

ikr*_*him 1 rust rust-rocket

我是 Rust lang 的新手。-> _返回对于函数来说意味着什么rocket

#[launch]
fn rocket() -> _ {
    rocket::build()
        .attach(json::stage())
        .attach(msgpack::stage())
        .attach(uuid::stage())
}
Run Code Online (Sandbox Code Playgroud)

kmd*_*eko 6

#[launch]在这里试图变得聪明。文档内容如下:

为了避免在常见情况下需要导入任何项目,launch 属性将推断返回类型,写_Rocket<Build>

所以它只是宏提供的简写,以避免指定该返回类型。

通常,当使用 a_代替类型时,它是一个占位符,供编译器根据上下文推断它。然而,这对于返回类型来说是不允许的,因为 Rust 要求函数签名是显式的。请参阅操场上的错误。属性宏通常要求它们所修饰的项目是有效的 Rust,但 using在语法上_仍然有效(即使它在语义上无效),因此它是允许的。