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

Сигнатура ошибки в функции main(). Cнова (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>>