technocreatives / core2

The bare essentials of std::io for use in no_std. Alloc support is optional.
https://docs.rs/core2
Apache License 2.0
71 stars 23 forks source link

bare_io::error::Error instead of bare_io::Error #13

Closed hunhoffe closed 2 years ago

hunhoffe commented 2 years ago

Hello!

I'm having some issues porting a std-using library to no-std using core2/bare-io. I am getting some compiler complaints when I attempt to use my now-ported library:

              |    | expected struct `bare_io::error::Error`, found struct `bare_io::Error`
              |    | help: change the output type to match the trait: `Result<(), bare_io::error::Error>`
              |    |

The library code I have ported to use core2 is here. It builds correctly and passes the built-in library tests/benchmarks in both std and no-std mode.

I don't think I did anything fancy when porting to use bare-io.... I just replaced

    std::io::Write,
    std::io::Result as IOResult,

with

    bare_io::Write,
    bare_io::Result as IOResult,

If this is my error and I am using the library incorrectly, I apologize but either way I would welcome any guidance on how to fix this issue. I believe the error originates when an error is attempted to be handled with a ?.... but I believe this sort of error chaining is one of the main purposes for core2. I'd be happy to show the full error trace if there is interest. Thank you for your time!

bbqsrc commented 2 years ago

Your Cargo.toml includes bare-io, which predates this crate and only included equivalents to std::io. Change to using core2 = "0.3" and use core2::io for IO-related things, such as IO errors. core2::error::Error is equivalent to std's Error type.

hunhoffe commented 2 years ago

Thank you for the help! Sorry it was such a basic issue.