< 返回版块

freshman 发表于 2024-04-30 09:19

举个例子

fn test(a: i32) -> i32 {
    if a == 1 {
        return a;
    }
    panic!("h");
}

如上,按道理这个函数应该是有空元组和i32两个返回值类型,为什么编译器默认就认为是i32,虽然panic!()会退出当前线程,但是按编译规则这应该也是不合理的吧,这到底是编译器固定的编译规则还是panic!()底层用了什么写法?

评论区

写评论
作者 freshman 2024-04-30 14:53

是的,当初我没注意细看 ! 这个返回类型,感谢回复

--
👇
yuyidegit: panic 的返回类型是!

作者 freshman 2024-04-30 14:52

是的是的,明白了,谢谢

--
👇
liming01: panic时不是返回的空元组,而是不返回。

作者 freshman 2024-04-30 14:51

感谢回复,纠结了几天,是我基础还不够囧

--
👇
Bai-Jinlin: https://doc.rust-lang.org/stable/book/ch19-04-advanced-types.html#the-never-type-that-never-returns

Bai-Jinlin 2024-04-30 10:53

https://doc.rust-lang.org/stable/book/ch19-04-advanced-types.html#the-never-type-that-never-returns

liming01 2024-04-30 10:02

panic时不是返回的空元组,而是不返回。

yuyidegit 2024-04-30 09:27

panic 的返回类型是!

1 共 6 条评论, 1 页