Допустим, у меня есть ящик Lib1
, который объявляет что-то вроде:
#[macro_use]
extern crate quick_error;
quick_error! {
#[derive(Debug)]
pub enum MyError {
Foo {
description("FooError")
}
}
}
У меня есть другая библиотека Lib2
, которая зависит от Lib1
.
Я хотел бы расширить это MyError
с некоторыми дополнительными ошибками, характерными для Lib2
. Таким образом, я могу повторно использовать все базовые ошибки, которые были объявлены в Lib1
.
Кстати, у меня есть полный контроль над обеими библиотеками, и я могу изменять их столько, сколько мне нужно. Я определенно хотел бы продолжать использовать quick-error
для этого. Можно ли как-то продлить это?
Примечание: я уже посмотрел на Можно ли расширить перечисление дополнительными значениями? Это было определенно то, о чем я знал до открытия вопроса.
Это не решает эту конкретную проблему. В идеале я хотел бы продолжать использовать quick_error
. Плюс использование композиции для ошибок делает обработку ошибок в нисходящем направлении очень сложной. Есть ли хороший шаблон для расширения ошибок в библиотеках?