Тур по Rust Содержание

Сигнатура ошибки в функции main снова (Failable Main Revisited)

В коде Rust может быть множество представлений ошибок, но в стандартной библиотеке есть универсальный типаж std::error::Error для описания любых ошибок.

Используя умный указатель Box можно использовать тип Box<dyn std::error::Error> в качестве общего типа для возвращения ошибки, потому что он позволяет распространять вверх (propagate up) ошибку хранящуюся в куче по стеку вызова и взаимодействовать с ней на более высоких уровнях кода, без необходимости знать конкретный тип ошибки.

Ранее в Tour of Rust мы изучили, что функция main может возвращать ошибку. Теперь можно возвращать тип, имеющий возможность описать почти любой вид ошибки, которая могла бы произойти в программе, при условии что структура представляющая нашу ошибку реализует общий типаж std::error::Error из Rust.

fn main() -> Result<(), Box<dyn std::error::Error>>