flex-error is a lightweight Rust library that uses macros and traits to switch between different error tracing implementations and no_std. At Informal Systems, I developed flex-error to manage the errors propagated through different components in the IBC relayer.