РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
833 of 1245 menu

Тип Result<(), Box>

Тип Result<(), Box<dyn Error>> используется в тестовых функциях Rust для возврата ошибки. Если тест завершается успешно, функция возвращает Ok(()). Если в тесте возникает ошибка, функция возвращает Err с описанием ошибки. Этот тип особенно удобен тем, что позволяет использовать оператор ? внутри теста для проброса ошибок без ручной обработки.

Синтаксис

#[test] fn test_name() -> Result<(), Box<dyn Error>> { // test body Ok(()) }

Пример

Давайте напишем тест, который проверяет, что строка "abcde" имеет длину 5. При совпадении вернём Ok(()):

use std::error::Error; #[test] fn test_length() -> Result<(), Box<dyn Error>> { let s = "abcde"; if s.len() == 5 { Ok(()) } else { Err("length mismatch".into()) } }

Результат выполнения теста:

test test_length ... ok

Пример

Давайте напишем тест, который использует оператор ? для проброса ошибки из функции parse:

use std::error::Error; #[test] fn test_parse() -> Result<(), Box<dyn Error>> { let n: i32 = "12345".parse()?; assert_eq!(n, 12345); Ok(()) }

Результат выполнения теста:

test test_parse ... ok

Пример

Давайте напишем тест, который завершится ошибкой из-за неудачного парсинга строки:

use std::error::Error; #[test] fn test_bad_parse() -> Result<(), Box<dyn Error>> { let n: i32 = "abcde".parse()?; println!("{}", n); Ok(()) }

Результат выполнения теста:

test test_bad_parse ... FAILED

Смотрите также

  • атрибут test,
    который помечает функцию как тестовую
  • макрос assert_eq!,
    который проверяет равенство двух значений
  • макрос assert!,
    который проверяет истинность условия
  • макрос panic!,
    который прерывает выполнение с сообщением об ошибке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить