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

no-std fixedbitset-stack

A forked version of FixedBitSet that supports const generics

1 unstable release

0.5.7 Jun 14, 2024

#1543 in Data structures

Download history 195/week @ 2024-07-22 239/week @ 2024-07-29 220/week @ 2024-08-05 198/week @ 2024-08-12 65/week @ 2024-08-19 141/week @ 2024-08-26 70/week @ 2024-09-02 80/week @ 2024-09-09 46/week @ 2024-09-16 23/week @ 2024-09-23 46/week @ 2024-09-30 10/week @ 2024-10-07 8/week @ 2024-10-14 76/week @ 2024-10-21 15/week @ 2024-10-28 76/week @ 2024-11-04

175 downloads per month
Used in 2 crates (via kbnf)

MIT/Apache

140KB
3K SLoC

fixedbitset

A simple fixed size bitset container for Rust.

Please read the API documentation here

build_status crates

Recent Changes

  • 0.5.7
    • #127 and #128: Optimize Clone::clone_from to avoid extra allocations and copies.
  • 0.5.6
    • Fixed FixedBitset not implementing Send/Sync due to the stack size shrink.
  • 0.5.5 (yanked)
    • #116: Add functions for counting the results of a set operation (union_count, intersection_count, difference_count, symmetric_difference_count) by @james7132.
    • #118: Shrink the stack size of FixedBitset. There should be zero stack size overhead compared to a Vec.
    • #119: Fix builds for wasm32.
    • #120: Add more utility functions that were previously missing from the public interface: contains_any_in_range, contains_all_in_range, minimum, maximum, is_full, count_zeroes, and remove_range.
    • #121: Add support for SIMD acceleration for AVX builds.
  • 0.5.4
    • #112: Fix undefined behavior in IntoOnes and setup testing with MIRI by @SkiFire13
  • 0.5.3 (yanked)
    • #109: Fix non-x86(_64) builds by @james7132
  • 0.5.2 (yanked)
    • #86: Explicit SIMD vectorization for set operations by @james7132.
  • 0.5.1
    • #102: Added contains_unchecked, insert_unchecked, put_unchecked, set_unchecked, toggle_unchecked, removed_unchecked, copy_bit_unchecked unsafe variants of the safe functions, by @james7132
    • #103: Added into_ones which returns a owned iterator over the one values from a bitset, by @james7132.
    • #104: Implemented DoubleEndedIterator for Union, Intersection, Difference, and SymmetricDifference , by @james7132.
  • 0.5.0
    • #74: Accelerated set operations (union, intersection, difference, symmetric difference) by using larger blocks internally, by @james7132.
    • #88: Added FixedBitSet::remove by @james7132.
    • #89: Added FixedBitSet::zeros and the Zeros iterator by @james7132.
    • #92: Added FixedBitSet::grow_and_insert function, a non-panicking version of insert that grows the underlying storage as need, by @shuoli84.
    • #98: Ones now implements DoubleEndedIterator, by @tikhu.
    • #99: Breaking change: serde now serializes and deserializes from a little-endian encoded raw byte buffer. Existing stored instances of the serialized bitsets will need to be re-encoded.
    • Bumped MSRV to 1.56.
  • 0.4.2
    • #79: Add is_clear, clarify is_empty and len documentation by @nicopap.
  • 0.4.1
    • Documentation and formatting fixes.
  • 0.4.0
    • #61: Require Rust 1.39.
    • #60: Add const FixedBitSet::new consructor by @jakobhellermann.
    • #59: Add optional serde support by @keshavsn.
  • 0.3.2
    • #18: Optimize ones using trailing_zeroes by @vks
  • 0.3.1
    • Add bit assign operators for references by @flaghacker
    • Improve assertion error messages by @lovasoa
    • Add documentation examples for with_capacity_and_blocks
  • 0.3.0
    • Add with_capacity_and_blocks by @luizirber
    • Add difference_with by @sunshowers
    • Implement Binary and Display traits by @Dolphindalt
    • Add toggle_range by @wirelyre
  • 0.2.0
    • Add assign operators for the bit operations by @jrraymond
    • Add symmetric_difference, union_with, intersection_with by @jrraymond
    • Add is_subset, is_superset, is_disjoint by @nwn
    • Add .toggle(i) method by @ShiroUsagi-san
    • Add default feature "std" which can be disabled to make the crate not link the std library. By @jonimake and @bluss
    • Require Rust 1.31.
  • 0.1.9
    • Add intersection, union, difference iterators by @jrraymond
    • Add intersection: & and union: | operator implementations by @jrraymond
    • Add Extend and FromIterator implementations (from sequences of bit indices) by @jrraymond
  • 0.1.8
    • Add missing #[inline] on the ones iterator
    • Fix docs for insert_range, set_range
  • 0.1.7
    • Add fast methods .insert_range, .set_range by @kennytm
  • 0.1.6
    • Add iterator .ones() by @mneumann
    • Fix bug with .count_ones() where it would erronously have an out-of-bounds panic for even block endpoints
  • 0.1.5
    • Add method .count_ones(range).
  • 0.1.4
    • Remove an assertion in .copy_bit(from, to) so that it is in line with the documentation. The from bit does not need to be in bounds.
    • Improve .grow() to use Vec::resize internally.
  • 0.1.3
    • Add method .put() to enable a bit and return previous value
  • 0.1.2
    • Add method .copy_bit() (by fuine)
    • impl Default
  • 0.1.1
    • Update documentation URL
  • 0.1.0
    • Add method .grow()

License

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0 or the MIT license, at your option. This file may not be copied, modified, or distributed except according to those terms.

Dependencies

~155KB