* so iow you'd roughly have something like this (that's `thiserror` on `std` because I'm lazy like that)

```rust

#[derive(Error, Debug)]
enum Failure {
    #[error(transparent)]
    Connection(#[from] ConnectionFailure),
    #[error("moooom I don't wanna")]
    IJustDontFeelLikeIt,
}

#[derive(Error, Debug)]
enum EndpointFailure {
    #[error("bork bork bork")]
    Bork,
    #[error("hork")]
    Hork,
    #[error("blork")]
    Blork,
}

#[derive(Error, Debug)]
enum ServerFailure {
    #[error(transparent)]
    Endpoint(#[from] EndpointFailure),
    #[error("have you tried turning it on again?")]
    PoweredOff,
    #[error("spawn more overlords")]
    HellGateNotOpen,
}
#[derive(Error, Debug)]
enum ConnectionFailure {
    #[error(transparent)]
    Server(#[from] ServerFailure),
    #[error("Cable missing")]
    WirelessCableMissing,
    #[error("Wednesday")]
    CaptainItsWednesday,
}
```