New error handling proof of concept
In this series, I plumb an IO::Error from the underlying TCP transport, through the channel and circuit managers, up to the toplevel, and wrap it in a new top-level TorError
.
Much is left undone. Notably: I only really touched this one error path. I think in practice our code is going to have to be able to exist in this intermediate state for a little while, so that's OK.
And there is too much boilerplate here. I think we want a derive macro that generates From<InternalError>
and From<SpawnError>
and HasKind
impls at least.
@nickm, @eta: Please look at this and see what you think of how it all ends up. Now is the right time to refine the design, idioms, etc.
The CI will fail because I have an anomalous formatting and didn't want to add a #[rustfmt::skip]
. I also haven't run the tests yet...