Proposal
Problem statement
I'd like a way to define lightweight custom I/O errors that don't require allocation.
Motivation, use-cases
- Offer a way forward for future better
#![no_std] compatibility for std::io::Errors
- Reduce generated code size for most common custom errors
- Avoid needing to allocate memory for the common case with custom errors.
For some prior art and additional motivation:
Solution sketches
- Expose the internal
SimpleMessage struct as a way to provide lightweight errors along with an impl From<&'static SimpleMessage> for Error.
- Expose
const_io_error! to simplify construction of SimpleMessage-based errors, and default its $kind to ErrorKind::Other if not given.
Links and related work
What happens now?
This issue is part of the libs-api team API change proposal process. Once this issue is filed the libs-api team will review open proposals in its weekly meeting. You should receive feedback within a week or two.
Proposal
Problem statement
I'd like a way to define lightweight custom I/O errors that don't require allocation.
Motivation, use-cases
#![no_std]compatibility forstd::io::ErrorsFor some prior art and additional motivation:
const_io_error!is already in broad use instd, with about 50 hits in a brief search: https://github.com/rust-lang/rust/search?q=const_io_error\bError::new\(\s*((std::)?io::)?ErrorKind::\w+\s*,\s*", with 14.2k results across 2.1k repos being of kindOther: https://sourcegraph.com/search?q=context:global+/%5CbError::new%5C%28%5Cs*%28%28std::%29%3Fio::%29%3FErrorKind::Other%5Cs*%2C%5Cs*%22/+count:all+timeout:10s&patternType=standard&case=yes&sm=0&groupBy=repoSolution sketches
SimpleMessagestruct as a way to provide lightweight errors along with animpl From<&'static SimpleMessage> for Error.const_io_error!to simplify construction ofSimpleMessage-based errors, and default its$kindtoErrorKind::Otherif not given.Links and related work
std::error::Error->core::error::ErrorTracking Issue forErrorincorerust#103765 + Move Error trait into core rust#99917What happens now?
This issue is part of the libs-api team API change proposal process. Once this issue is filed the libs-api team will review open proposals in its weekly meeting. You should receive feedback within a week or two.