#integer #type #c99

no-std stdint

C99 stdint/stdio 类型,以简化互操作

3个版本 (1个稳定版)

1.0.0 2024年6月3日
0.2.0 2022年12月27日
0.1.0 2022年12月22日

#202硬件支持

Download history 17/week @ 2024-04-26 3/week @ 2024-05-03 1/week @ 2024-05-10 100/week @ 2024-05-17 56/week @ 2024-05-24 371/week @ 2024-05-31 369/week @ 2024-06-07 209/week @ 2024-06-14 66/week @ 2024-06-21 8/week @ 2024-06-28 36/week @ 2024-07-05 25/week @ 2024-07-12 3/week @ 2024-07-19 62/week @ 2024-07-26 7/week @ 2024-08-02

每月74次下载

BSD-2-Clause

19KB
194

stdint

提供C99整数类型,如 uint_fast16_tuint_least16_t 等,以便在标准和无 std 环境中使用这些类型的C库中进行交互。受Vojtech Kral的 C99 crate 启发。

该库默认使用 std crate。因此,您只需将依赖项添加到您的 Cargo.toml 文件中即可

[dependencies]
stdint = "*"

要在 no_std 环境中使用该库,请禁用默认功能

[dependencies]
stdint = { version = "*", default-features = false }

请注意,特定的类型别名取决于您的目标架构。在 docs.rs 上,int_fast16_t 类型目前显示为别名到 std::ffi::c_long;这是文档生成器的结果

pub type int_fast16_t = c_long;

实际的保证是

#[test]
fn int16() {
    assert_eq!(size_of::<int16_t>(), 2);
    assert!(size_of::<int_least16_t>() >= 2);
    assert!(size_of::<int_fast16_t>() >= 2);

    assert_eq!(size_of::<uint16_t>(), 2);
    assert!(size_of::<uint_least16_t>() >= 2);
    assert!(size_of::<uint_fast16_t>() >= 2);
}

要在 no_std 模式下运行测试,请执行

$ cargo test --no-default-features

定义的大小类型

N 确切大小(N位) 具有至少N位的最小类型 具有至少N位的最快类型
8 int8_tuint8_t int_least8_tuint_least8_t int_fast8_tuint_fast8_t
16 int16_tuint16_t int_least16_tuint_least16_t int_fast16_tuint_fast16_t
32 int32_tuint32_t int_least32_tuint_least32_t int_fast32_tuint_fast32_t
64 int64_tuint64_t int_least64_tuint_least64_t int_fast64_tuint_fast64_t

特殊类型

类型 用途
intptr_tuintptr_t 能够容纳 *void 的类型
intmax_tuintmax_t 可用的最大整数类型

常量

根据 MINMAX 常量定义在 stdint.h 中,通过 consts 模块公开,例如 INT_FAST16_MININT_FAST16_MAX。由于 Rust 的类型系统,这些值与 int_fast16_t::MINint_fast16_t::MAX 相同。

无运行时依赖

~0–1.8MB
~37K SLoC