This is probably better answered by how Rust handles errors generally:
https://doc.rust-lang.org/book/error-handling.html
Suffice it to say, similar magic tricks have already been at work to make handling errors not soak up a lot of space, and it'd work well with something like this, I think.
How are are handling errors ? - One Error state with the context ?