3个版本
0.1.2 | 2020年10月5日 |
---|---|
0.1.1 | 2020年10月5日 |
0.1.0 | 2020年9月27日 |
#379 in 内存管理
每月50次下载
用于 6 个crate(4个直接)
8KB
130 行
Maybe-std
一个帮助编写无需alloc和/或std但可提供额外功能的Rust库的crate。编写此类库需要一些命名空间操作,该crate会处理这些操作。它根据启用的功能导出来自core
、alloc
或std
的所有项。
用法
通过将其添加到您的Cargo.toml
文件中来依赖此crate
[dependencies]
maybe-std = "0.1.0"
# If the library always requires the `alloc` crate, directly enable the feature:
# maybe-std = { version = "0.1.0", features = [ "alloc" ] }
定义控制您的库是否使用alloc
和/或std
的特征标志,并将它们传递给maybe_std
crate
[features]
alloc = [ "maybe-std/alloc" ] # Remove if the library always requires `alloc`
std = [ "maybe-std/std" ]
在crate根目录中,禁用标准库并导入此crate - 可选将其重命名为更简短的名字以使内容更易读。
#![no_std]
extern crate maybe_std as base;
// `base` contains the same items as `core`, `alloc` or `std`, depending on
// the enabled features.
在所有文件中,导入引言
use base::prelude::v1::*;
在使用 std
功能时,使用 #[cfg(feature = "std")]
来启用门控,当使用应即使在没有 std
的情况下也应可用的 alloc
功能时,使用 #[cfg(any(feature = "alloc", feature = "std"))]
来启用门控
#[cfg(feature = "std")]
pub const HOME: base::net::Ipv4Addr = base::net::Ipv4Addr::LOCALHOST;
#[cfg(any(feature = "alloc", feature = "std"))]
pub fn empty_string() -> String {
String::new()
}
访问不稳定功能
默认情况下,此crate不导出任何 alloc 的不稳定功能。这些可以通过 unstable
功能标志启用。