Почему `should_panic` является атрибутом, а не макросом? - PullRequest
0 голосов
/ 25 июня 2019

Интересно, почему мы не используем функцию или макрос для проверки, будет ли функция паниковать.

Из книги :

В дополнение к проверке того, что наш код возвращает правильные значения, которые мы ожидаем, также важно проверить, что наш код обрабатывает ошибки, как мы ожидаем.
Мы делаем это, добавляя еще один атрибут should_panic в нашу тестовую функцию. Этот атрибут проходит тест, если код внутри функции паникует; тест не пройдёт, если код внутри функции не паникует.

Почему это не макрос, как assert!?

Этот код будет понятен и стандартизирован с другими макросами тестирования.

#[test]
fn greater_than_100() {
    should_panic!(Guess::new(200));
}
...