#cargo #子命令 #nono #no-std

no-std app cargo-nono

检测您的crate及其依赖项的(可能)no_std 兼容性

10 个版本

0.1.9 2020年9月27日
0.1.8 2020年1月8日
0.1.6 2019年9月10日
0.1.5 2019年6月29日
0.1.2 2018年11月16日

#308 in Cargo 插件

26 每月下载量

MIT/Apache

6MB
1K SLoC

包含 (Mach-o 可执行文件, 1.5MB) crate_itself_fixed_no_std-2702d7a9e7ab9d0b, (Mach-o 可执行文件, 590KB) crate_itself_fixed_no_std, (Mach-o 可执行文件, 1MB) verify_dependency_with_std-8cdf0632c65e0c89, (Mach-o 可执行文件, 1MB) verify_dependency_with_std-8cdf0632c65e0c89, (Mach-o 可执行文件, 285KB) detect_explicit_use_std, (Rust 库, 295KB) libverify_dependency_with_std-9585336dd8a289b9.rlib 以及 77 个其他文件。

运行 cargo nono - 检测您的crate及其依赖项的(可能)no_std 兼容性

动机

从嵌入式编程,到 Rust 中的智能合约,再到通用跨平台便携式 crate,带有 #![no_std] 的 crate 正变得越来越普遍。然而,目前很难确定一个 crate 是否与 no_std 使用兼容,以及为什么(或不)兼容,这通常需要漫长的试错过程,并深入挖掘所有依赖项的源代码。

cargo nono 尝试帮助您导航当前 no_std 使用中的雷区及其最大的“禁忌”。

安装

预构建的二进制文件

cargo-nono 也提供预构建的二进制文件(对 CI 有用)

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

来自 crates.io

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

演示

asciicast

用法

在您要检查的 crate 目录中运行

cargo nono check

运行 cargo nono check 子命令也理解 --no-default-features--features <FEATURES> 标志,以帮助进行条件 no_std 设置。

功能

  • 尝试通过寻找 no_std 属性或常用的条件属性 #![no_std]#![cfg_attr(not(feature = "std"), no_std)]
  • 帮助确定哪些依赖和功能标志激活了 std 功能标志
  • 警告代码中存在 use std:: 语句

计划中的功能

  • 警告 [build-dependencies] 特性溢出:cargo#5730

许可证

许可协议为以下之一

任选其一。

依赖项

~5–12MB
~130K SLoC