6个版本

0.3.1 2023年4月12日
0.3.0 2023年4月9日
0.2.3 2023年4月7日
0.1.0 2023年4月6日

#17 in #sized

每月23次下载

MIT许可证

21KB
337


Matrix Test crate-name at crates.io crate-name at docs.rs

此库提供了SizedBiset<B>,这是从C++的std::bitset<N>借用的一个想法,以及一些相关的功能。


lib.rs:

sized_bitset

此库提供了SizedBitset(静态大小的bitset)及其功能。

SizedBitset 101

  • 常量初始化
use sized_bitset::SizedBitset;
const BITSET: SizedBitset<4> = SizedBitset::from_const([true, true, false, false]);
  • 来自原始数据类型

From<u{N}> SizedBitset<{M}>仅在N <= M时定义。

use sized_bitset::SizedBitset;
let bitset: SizedBitset<8> = 0b10101010.into();
  • 尝试从切片中解析

如果切片长度与SizedBitset大小不精确相同,则会触发panic。


use sized_bitset::SizedBitset;
let bitset: SizedBitset<4> = [true, true, true, true].as_slice().try_into().unwrap();
  • 解析字符串

如果字符串长度大于SizedBitset大小,则会触发panic。


use sized_bitset::SizedBitset;
let bitset: SizedBitset<4> = "1010".parse().unwrap();

转换为原始数据类型

允许使用sized_bitset::convert::*;将[SizedBitset]转换为原始数据类型。

To{N} for SizedBitset<{M}>仅在N >= M时定义。

pub mod convert {
    pub trait To8 {
        fn to_u8(&self) -> u8;
    }
    pub trait To16 {
        fn to_u16(&self) -> u16;
    }
    pub trait To32 {
        fn to_u32(&self) -> u32;
    }
    pub trait To64 {
        fn to_u64(&self) -> u64;
    }
    pub trait To128 {
        fn to_u128(&self) -> u128;
    }
}

依赖项

~1.3–2.5MB
~46K SLoC