If I have a crate which is supposed to be #![no_std] then if it has any dependency which is not #![no_std] then it is kind of lying it. Is there anyway to mention/restrict the usage of std features in a no_std crate through its dependencies
If I don't depend on
serde but a dependency of mine does, I'm not lying, but
serde will still be required.
I don't know how to prevent dependencies that rely on
std (or a specific crate) offhand.
I don't believe there is anything built into Rust that will directly prevent a dependency of yours from linking with
As far as I know, the best way to ensure all transitive dependencies are
no_std is by cross-compiling your code for a platform that doesn't include the standard library (e.g.
cargo build --target thumbv6m-none-eabi).
cargo no-no tool might also work for you: