Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
ci
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

cargo nono - Detect (possible) no_std compatibility of your crate and dependencies

Motivation

From embedded programming, over smart contracts in Rust, to general cross-platform portable crates, #![no_std] crates are becoming more and more widespread. However it is currently a very cumbersome process to find out if and why (not) a crate is compatible with no_std usage, and often requires a lengthy trial and error process, and digging through the source of all your dependencies.

cargo nono tries to aid you in navigating the current minefield that is no_std usage, and it's biggest "no no"s.

Installation

Prebuilt binaries

cargo-nono also comes as prebuilt binaries (useful for CI):

curl -LSfs https://japaric.github.io/trust/install.sh | \
    sh -s -- --git hobofan/cargo-nono

From crates.io

cargo install cargo-nono
# For warnings with more informative messages install like this
RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install cargo-nono

Demo

asciicast

Usage

Run in the crate directory you want to check:

cargo nono check

The cargo nono check subcommand also understands the --no-default-features and --features <FEATURES> flags to help in conditional no_std setups.

Features

  • Tries to infer no_std compatibility in dependencies by looking for a #![no_std] attribute or the often used conditional #![cfg_attr(not(feature = "std"), no_std)]
  • Helps in pinpointing which dependencies and feature flags activate std feature flags
  • Warn of use std:: statements in code

Planned features

  • Warn of [build-dependencies] features bleeding over: cargo#5730

License

Licensed under either of

at your option.

You can’t perform that action at this time.