#const-generics #bit-set #fixed-size #bitvec #container

no-std fixedbitset-stack

支持const泛型的FixedBitSet的分支版本

1 个不稳定版本

0.5.7 2024年6月14日

数据结构 中排名 846

Download history 156/week @ 2024-06-09 969/week @ 2024-06-16 671/week @ 2024-06-23 1/week @ 2024-06-30 191/week @ 2024-07-21 242/week @ 2024-07-28 213/week @ 2024-08-04 78/week @ 2024-08-11

每月下载量 724
2 个crate中使用(通过 kbnf

MIT/Apache

140KB
3K SLoC

fixedbitset

Rust的一个简单的固定大小bitset容器。

请在此处阅读API文档

build_status crates

最近更改

  • 0.5.7
    • #127#128:优化 Clone::clone_from 以避免额外的分配和复制。
  • 0.5.6
    • 修复了由于栈大小缩小而未实现Send/Sync的FixedBitset。
  • 0.5.5(已撤回)
    • #116:通过 @james7132 添加了对集合操作结果进行计数的函数(union_countintersection_countdifference_countsymmetric_difference_count)。
    • #118:减小FixedBitset的栈大小。与Vec相比,应没有栈大小开销。
    • #119:修复wasm32的构建。
    • #120:添加更多之前在公共接口中缺失的实用函数:contains_any_in_rangecontains_all_in_rangeminimummaximumis_fullcount_zeroesremove_range
    • #121:添加对SIMD加速的AVX构建的支持。
  • 0.5.4
    • #112:通过 @SkiFire13 修复了IntoOnes中的未定义行为,并使用MIRI设置了测试。
  • 0.5.3(已撤回)
    • #109:通过 @james7132 修复了非x86(_64)的构建。
  • 0.5.2(已撤回)
    • #86:通过 @james7132 对集合操作进行了显式的SIMD向量化。
  • 0.5.1
    • #102:通过 @james7132 添加了不安全函数的安全版本,包括 contains_uncheckedinsert_uncheckedput_uncheckedset_uncheckedtoggle_uncheckedremoved_uncheckedcopy_bit_unchecked
    • #103:通过 @james7132 添加了 into_ones,它返回一个从bitset中获取所有值的拥有迭代器。
    • #104:实现了对 DoubleEndedIterator 的支持,用于 UnionIntersectionDifferenceSymmetricDifference,由 @james7132 实现。
  • 0.5.0
    • #74:通过使用更大的内部块加速集合操作(并集、交集、差集、对称差集),由 @james7132 实现。
    • #88:由 @james7132 添加了 FixedBitSet::remove
    • #89:由 @james7132 添加了 FixedBitSet::zerosZeros 迭代器。
    • #92:由 @shuoli84 添加了 FixedBitSet::grow_and_insert 函数,这是 insert 的一个非panic版本,根据需要增长底层存储。
    • #98:现在 Ones 实现了 DoubleEndedIterator,由 @tikhu 实现。
    • #99破坏性变更:serde 现在从小端编码的原始字节数据缓冲区进行序列化和反序列化。现有的序列化位集实例需要重新编码。
    • 将 MSRV 提升至 1.56。
  • 0.4.2
    • #79:添加了 is_clear,由 @nicopap 澄清了 is_emptylen 的文档。
  • 0.4.1
    • 文档和格式化修复。
  • 0.4.0
    • #61:需要 Rust 1.39。
    • #60:由 @jakobhellermann 添加了 const 构造函数 FixedBitSet::new
    • #59:由 @keshavsn 添加了可选的 serde 支持。
  • 0.3.2
    • #18:通过使用 trailing_zeroes 优化 ones,由 @vks 实现。
  • 0.3.1
    • 由 @flaghacker 添加了位赋值运算符。
    • 由 @lovasoa 改进了断言错误信息。
    • with_capacity_and_blocks 添加了文档示例。
  • 0.3.0
    • 由 @luizirber 添加了 with_capacity_and_blocks
    • 由 @sunshowers 添加了 difference_with
    • 由 @Dolphindalt 实现了 BinaryDisplay 特性。
    • 由 @wirelyre 添加了 toggle_range
  • 0.2.0
    • 由 @jrraymond 添加了位操作赋值运算符。
    • 由 @jrraymond 添加了 symmetric_differenceunion_withintersection_with
    • 由 @nwn 添加了 is_subsetis_supersetis_disjoint
    • 由 @ShiroUsagi-san 添加了 .toggle(i) 方法。
    • 通过 @jonimake 和 @bluss 添加默认功能 "std",可以通过禁用它来使 crate 不链接 std 库。
    • 需要 Rust 1.31。
  • 0.1.9
    • 由 @jrraymond 添加了交集、并集、差集迭代器。
    • 由 @jrraymond 添加了交集运算符 & 和并集运算符 | 的实现。
    • 由 @jrraymond 添加了扩展和 FromIterator 实现(从位索引的序列中)。
  • 0.1.8
    • 在ones迭代器上添加缺失的#[inline]
    • 修复insert_range, set_range的文档
  • 0.1.7
    • 添加由@kennytm提供的快速方法.insert_range.set_range
  • 0.1.6
    • 添加由@mneumann提供的迭代器.ones()
    • 修复了.count_ones()的bug,该bug会导致偶数块端点越界恐慌
  • 0.1.5
    • 添加方法.count_ones(range)
  • 0.1.4
    • 移除.copy_bit(from, to)中的断言,使其与文档保持一致。from位不需要在范围内。
    • 改进.grow()以使用内部Vec::resize
  • 0.1.3
    • 添加方法.put()以启用位并返回旧值
  • 0.1.2
    • 添加方法.copy_bit()(由fuine提供)
    • 实现Default
  • 0.1.1
    • 更新文档URL
  • 0.1.0
    • 添加方法.grow()

许可

双许可以与Rust项目兼容。

许可协议为Apache License, Version 2.0MIT许可,任选其一。本文件不得根据这些条款以外的任何条款进行复制、修改或分发。

依赖项

~170KB