rust-lang-deprecated/failure

Support for an alloc feature?

cbeck88 opened this issue · 1 comments

I'm trying to port prost so that it can work in an alloc-only environment. Specifically we want to use it inside of an SGX enclave.

prost-derive is a proc-macro crate, that uses failure crate to do error handling. Unfortunately for us, it turns out that prost-derive uses failure::Error and failure::Bail, which require the feature failure/std. But because of long-standing issues in cargo, this means that failure crate will globally be std, and so our no_std, alloc-only targets won't build that are using failure crate.

There's a separate issue in cargo project so that deps of build.rs and proc-macro don't infect the rest of the build but it's a long way away as I understand.

Are you interested in a patch that adds an alloc feature to failure crate and makes more of failure crate, specifically the macros, work in alloc mode?

I'm trying to decide if the best way forward for our project is to patch prost-derive away from using failure crate, or to try to make these parts of failure crate more portable.

As a temporary workaround, I have republished this crate as alt-failure on cargo, so that I can make prost-derive depend on it instead of failure crate in my project, but renaming it to failure in prost-derive Cargo.toml so that no code changes in prost-derive are needed for this issue. Then the proc-macro is free to use std without causing std to infect the main target. Would love a better solution