В 99% случаев нет существенной разницы.Я просто позволю rustfmt делать все, что захочу, и не думать об этом.
Есть ли причина ставить точку с запятой после паники?
Да.Если вы решите вставить панику в середине некоторого кода для быстрой и грязной отладки, если вы не добавите точку с запятой, вы получите синтаксическую ошибку:
fn main() {
// ... some code ...
// We add a quick panic for some reason
panic!("oops")
// ... some code ...
1;
}
error: expected one of `.`, `;`, `?`, `}`, or an operator, found `1`
--> src/main.rs:8:5
|
5 | panic!("oops")
| - expected one of `.`, `;`, `?`, `}`, or an operator here
...
8 | 1;
| ^ unexpected token
Сточка с запятой, вы сможете скомпилировать с некоторыми предупреждениями о недоступном коде.
Есть также неявный вопрос:
Есть ли основания для не поставитьточка с запятой после паники?
Единственное, о чем я могу подумать, это когда вы пишете свою собственную расходящуюся функцию:
fn crash_override() -> ! {
panic!("oops")
}
Это не нужно, но может показаться более очевидным длясчитыватель, что тип never возвращается в этом случае из panic!
.
Есть ли разница между panic!("blah");
и panic("blah")
?
Дапервый - это оператор, второй - выражение.
, но panic!
приводит к завершению текущего потока.
Это поведение по умолчанию, да, но оно не единственное.Когда panic = abort
не включен, вы можете поймать панику, если вам нужно .