Есть ли причина ставить точку с запятой после паники? - PullRequest
0 голосов
/ 30 мая 2018

Есть ли разница между panic!("blah"); и panic("blah")?

Как я понимаю, точки с запятой различают операторы и выражения 1 .Иными словами, отсутствие точки с запятой показывает, что значение ожидается в результате выражения 2 .

В большинстве случаев это довольно просто, ноpanic! вызывает завершение текущего потока.Программа никогда не вернется из panic!, поэтому результат выражения не имеет смысла, верно?

Будет ли выражение panic!("blah") вести себя иначе, чем выражение panic!("blah);?

1 Ответ

0 голосов
/ 30 мая 2018

В 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 не включен, вы можете поймать панику, если вам нужно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...