举个例子
fn test(a: i32) -> i32 {
if a == 1 {
return a;
}
panic!("h");
}
如上,按道理这个函数应该是有空元组和i32两个返回值类型,为什么编译器默认就认为是i32,虽然panic!()会退出当前线程,但是按编译规则这应该也是不合理的吧,这到底是编译器固定的编译规则还是panic!()底层用了什么写法?
1
共 6 条评论, 1 页
评论区
写评论是的,当初我没注意细看 ! 这个返回类型,感谢回复
--
👇
yuyidegit: panic 的返回类型是
!
吧是的是的,明白了,谢谢
--
👇
liming01: panic时不是返回的空元组,而是不返回。
感谢回复,纠结了几天,是我基础还不够囧
--
👇
Bai-Jinlin: https://doc.rust-lang.org/stable/book/ch19-04-advanced-types.html#the-never-type-that-never-returns
https://doc.rust-lang.org/stable/book/ch19-04-advanced-types.html#the-never-type-that-never-returns
panic时不是返回的空元组,而是不返回。
panic 的返回类型是
!
吧