不返回 (noreturn)

noreturn 是一个原语类型,表示表达式永远不会计算出结果。

以下表达式的类型为 noreturn

  • return 语句
  • break 语句
  • continue 语句
  • unreachable 表达式
  • while (true) {} 循环

兼容性

noreturn 类型可以强制转换为任何其他类型。这使得它可以用于需要特定类型的上下文中。

fn foo(condition: bool) i32 {
    if (condition) {
        return 1;
    } else {
        // unreachable 的类型是 noreturn,它可以强制转换为 i32
        unreachable;
    }
}

退出函数

标准库中的 std.process.exit 函数的返回类型是 noreturn,因为它会终止进程。

const std = @import("std");

fn fatal() noreturn {
    std.process.exit(1);
}