image-rs / jpeg-decoder

JPEG decoder written in Rust
Apache License 2.0
149 stars 87 forks source link

Make this crate usable in a no_std environment #199

Open linkmauve opened 2 years ago

linkmauve commented 2 years ago

196 removed most uses of std, but as said there std::io and std::error::Error are two remaining uses of std with no no_std replacement. Here is the tracking issue: https://github.com/rust-lang/rust/issues/48331

This issue is about adding an alternative API which wouldn’t use the io::Read trait for reading JPEG data, so that it could be used in embedded environments.

fintelia commented 2 years ago

Do you have a sketch of what the alternative API might look like?

vstroebel commented 2 years ago

One possibility to solve this, is to create your own std::io::Read alike Trait with a custom error type and implement this for everything implementing std::io::Read if std is available. This way the same API can be used with your no_std and the std Read type.

I've use a similar approach for std::io::Write to add no_std support to the jpeg-encoder crate.