#standard #helper #optional #alloc #std #enabled #items

无std maybe-std

用于编写具有可选标准库依赖的Rust库的帮助程序crate

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个直接)

CC-PDDC许可

8KB
130

Maybe-std

一个帮助编写无需alloc和/或std但可提供额外功能的Rust库的crate。编写此类库需要一些命名空间操作,该crate会处理这些操作。它根据启用的功能导出来自coreallocstd的所有项。

用法

通过将其添加到您的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 功能标志启用。

无运行时依赖

功能