3个不稳定版本
0.2.0 | 2024年2月25日 |
---|---|
0.1.5 | 2024年2月14日 |
0.0.1 |
|
#608 in 数据结构
每月 310次下载
用于 2 crates
225KB
5K SLoC
库旨在提供易于使用的位集,并提供一些开箱即用的功能。
启用功能"serde"以启用适用于大多数类型的serde::Serialize
和serde::Deserialize
使用概述
use bitworks::prelude::*;
fn main() {
// Build the bitset with variety of methods.
let mut bitset = Bitset8::NONE
.clone()
.include(Bitset8::new(0b10000000))
.set(Index8::from_usize(1))
.replace(Index8::from_usize(3), One)
.flip(Index8::from_usize(5))
.build();
assert_eq!(bitset.into_inner(), 0b10101010);
// Iterate over bits as copies, references or mutable references.
for mut bit in bitset.bits_mut() {
*bit = !*bit;
}
assert_eq!(bitset.into_inner(), 0b01010101);
assert_eq!(bitset.bit(Index8::from_usize(7)), Zero);
let other = Bitset8::new(0b11110000);
// Use Set operations.
let bitset = bitset.complement();
assert_eq!(bitset.into_inner(), 0b10101010);
assert_eq!(bitset.union(other).into_inner(), 0b11111010);
assert_eq!(bitset.intersection(other).into_inner(), 0b10100000);
assert_eq!(bitset.difference(other).into_inner(), 0b00001010);
assert_eq!(bitset.sym_difference(other).into_inner(), 0b01011010);
assert!(bitset.intersects(&other));
assert!(!bitset.includes(&other));
assert!(Bitset8::ALL.includes(&bitset));
// Expand, combine and split.
let bigger_bitset: Bitset16 = bitset.expand();
assert_eq!(bigger_bitset.into_inner(), 0b0000000010101010);
let combined: Bitset16 = bitset.combine(other);
assert_eq!(combined.into_inner(), 0b1111000010101010);
let (bitset, other) = combined.split::<Bitset8, Bitset8>();
assert_eq!(bitset.into_inner(), 0b10101010);
assert_eq!(other.into_inner(), 0b11110000);
// Collect in other collections and construct from them.
let v: Vec<Bit> = bitset.bits().rev().collect();
assert_eq!(&v, &[One, Zero, One, Zero, One, Zero, One, Zero]);
let bitset = Bitset8::from_iterable(&v);
assert_eq!(bitset.into_inner(), 0b01010101);
}
许可协议
根据您选择的任何一种许可协议:
- Apache License, Version 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,均应双重许可,如上所述,不附加任何额外条款或条件。
依赖关系
~170KB