我希望写一个库,同时支持 no_std
和 std
。
参考别的库试着写了一下,但似乎写得不对。
lib.rs
:
#![cfg_attr(not(feature = "std"), no_std)]
pub mod no_std;
#[cfg(feature = "std")]
pub mod std;
我想让 mod std 支持 std,而 mod no_std 仅允许使用 core,应如何正确设置呢?
1
共 1 条评论, 1 页
评论区
写评论你似乎没搞明白cfg_attr这句是在干什么,首先这个库的cargo.toml里有个叫std的feature,这个不是编译器给你提供的东西,#![cfg_attr(not(feature = "std"), no_std)]的意思是假如没有启用这个feature就启动no_std属性,这个属性会阻止std引入作用域,仅此而已,连阻止链接标准库都不会。你要想按你那么想只能用自定义的feature来整,我记得没有办法检测你是不是在no_std下。