< 返回版块

hzqd 发表于 2021-09-29 11:26

我希望写一个库,同时支持 no_stdstd

参考别的库试着写了一下,但似乎写得不对。

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,应如何正确设置呢?

评论区

写评论
Bai-Jinlin 2021-09-29 21:52

你似乎没搞明白cfg_attr这句是在干什么,首先这个库的cargo.toml里有个叫std的feature,这个不是编译器给你提供的东西,#![cfg_attr(not(feature = "std"), no_std)]的意思是假如没有启用这个feature就启动no_std属性,这个属性会阻止std引入作用域,仅此而已,连阻止链接标准库都不会。你要想按你那么想只能用自定义的feature来整,我记得没有办法检测你是不是在no_std下。

1 共 1 条评论, 1 页