67·进阶特性高级

Never 类型与发散函数

Never 类型与发散函数

学习目标

  1. 理解 ! 类型
  2. 掌握发散函数
  3. 理解 never 类型的用途

核心概念

! 类型

// ! 表示永远不会返回的类型
fn forever() -> ! {
    loop {}
}

fn exit() -> ! {
    std::process::exit(1);
}

fn panic_fn() -> ! {
    panic!("crash");
}

在 match 中使用

fn main() {
    let x: Result<i32, &str> = Ok(42);

    let value = match x {
        Ok(n) => n,
        Err(_) => panic!("error"),  // panic! 返回 !,可以匹配任何类型
    };
}

! 可以转换为任何类型

fn main() {
    let x: i32 = match "123".parse::<i32>() {
        Ok(n) => n,
        Err(_) => return,  // return 返回 !,可以作为 i32
    };
}

小结

概念说明
!Never 类型,表示永不返回
发散函数返回 ! 的函数
panic!返回 !
process::exit返回 !
类型转换! 可以转换为任何类型

练习编辑器

rust
Loading...