Rust将`!`用作返回类型有什么用?

Vic*_*voy 5 rust

我最近看过这样的代码:

fn read() -> ! {
    unimplemented!()
}

fn read2() {
}

fn main() {
    read2();
    read();
}
Run Code Online (Sandbox Code Playgroud)

我在任何地方都找不到关于!as返回类型的任何信息,fn read()所以我不知道这是什么以及它的作用。

我发现的唯一东西似乎对我没用:

使用!作为返回类型向Rust编译器指示此函数永不返回

我不明白它的作用,因为省略类型也表示该函数什么也不返回(unit实际上是该类型)。

Fre*_*ios 6

Unit()不是什么都没有,它一种类型,还写了一个可能的值()

此外,当一个函数返回单位(或如你所说的“无”)时,它实际上会返回。该Never类型!指明函数从不返回,退出程序。

这通常是panic宏的返回类型:

let s = match i {
    1 => "one",
    2 => "two",
    _ => panic!("Error"),
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,注意!可以“扮演角色”的所有类型。编译器不会抱怨一个分支有 type&str而另一个分支有 type !

为了您的信息,这里有一个类型的历史Never