3个版本
0.1.12 | 2023年10月9日 |
---|---|
0.1.11 | 2023年10月9日 |
0.1.10 | 2023年10月6日 |
#151 在 #subcommand
47KB
1K SLoC
cargo nono - 检测你的crate及其依赖的(可能)no_std兼容性
动机
从嵌入式编程,到Rust中的智能合约,再到通用的跨平台可移植crate,使用#![no_std]
的crate越来越普遍。然而,目前要确定一个crate是否与no_std
使用兼容,以及为什么(或不)兼容,是一个非常繁琐的过程,通常需要长时间的试错过程,并且需要深入挖掘所有依赖项的源代码。
cargo nono试图帮助你导航当前no_std
使用的地雷区,以及最大的“禁忌”。
安装
从crates.io
cargo install cargo-davinono
# For warnings with more informative messages install like this
RUSTFLAGS="--cfg procmacro2_semver_exempt" cargo install cargo-davinono
演示
使用方法
在您要检查的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 - 也警告
use std::
,但上面的代码具有 #[cfg(feature = "std")] 或 #[cfg(not(feature = "std"))]
许可
在以下许可下使用
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖
~4–12MB
~113K SLoC