В коде 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>>