126 lines
6.6 KiB
Markdown
126 lines
6.6 KiB
Markdown
fixedbitset
|
|
---
|
|
|
|
A simple fixed size bitset container for Rust.
|
|
|
|
Please read the [API documentation here](https://docs.rs/fixedbitset/)
|
|
|
|
[](https://github.com/petgraph/fixedbitset/actions)
|
|
[](https://crates.io/crates/fixedbitset)
|
|
|
|
# Recent Changes
|
|
|
|
- 0.5.7
|
|
- [#127](https://github.com/petgraph/fixedbitset/pull/127) and [#128](https://github.com/petgraph/fixedbitset/pull/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](https://github.com/petgraph/fixedbitset/pull/116): Add functions for counting the results of a set operation (`union_count`,
|
|
`intersection_count`, `difference_count`, `symmetric_difference_count`) by @james7132.
|
|
- [#118](https://github.com/petgraph/fixedbitset/pull/118): Shrink the stack size of FixedBitset. There should be zero stack size overhead
|
|
compared to a Vec.
|
|
- [#119](https://github.com/petgraph/fixedbitset/pull/119): Fix builds for wasm32.
|
|
- [#120](https://github.com/petgraph/fixedbitset/pull/119): 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](https://github.com/petgraph/fixedbitset/pull/121): Add support for SIMD acceleration for AVX builds.
|
|
- 0.5.4
|
|
- [#112](https://github.com/petgraph/fixedbitset/pull/112): Fix undefined behavior in IntoOnes and setup testing with MIRI by @SkiFire13
|
|
- 0.5.3 (yanked)
|
|
- [#109](https://github.com/petgraph/fixedbitset/pull/109): Fix non-x86(_64) builds by @james7132
|
|
- 0.5.2 (yanked)
|
|
- [#86](https://github.com/petgraph/fixedbitset/pull/86): Explicit SIMD vectorization for set operations by @james7132.
|
|
- 0.5.1
|
|
- [#102](https://github.com/petgraph/fixedbitset/pull/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](https://github.com/petgraph/fixedbitset/pull/103): Added `into_ones` which returns a owned iterator over the one
|
|
values from a bitset, by @james7132.
|
|
- [#104](https://github.com/petgraph/fixedbitset/pull/104): Implemented `DoubleEndedIterator` for `Union`, `Intersection`,
|
|
`Difference`, and `SymmetricDifference` , by @james7132.
|
|
- 0.5.0
|
|
- [#74](https://github.com/petgraph/fixedbitset/pull/74): Accelerated set operations (union, intersection, difference,
|
|
symmetric difference) by using larger blocks internally, by @james7132.
|
|
- [#88](https://github.com/petgraph/fixedbitset/pull/88): Added `FixedBitSet::remove` by @james7132.
|
|
- [#89](https://github.com/petgraph/fixedbitset/pull/89): Added `FixedBitSet::zeros` and the `Zeros` iterator by @james7132.
|
|
- [#92](https://github.com/petgraph/fixedbitset/pull/92): Added `FixedBitSet::grow_and_insert` function, a
|
|
non-panicking version of `insert` that grows the underlying storage as need, by @shuoli84.
|
|
- [#98](https://github.com/petgraph/fixedbitset/pull/98): `Ones` now implements `DoubleEndedIterator`, by @tikhu.
|
|
- [#99](https://github.com/petgraph/fixedbitset/pull/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](https://github.com/petgraph/fixedbitset/pull/79): Add `is_clear`,
|
|
clarify `is_empty` and `len` documentation by \@nicopap.
|
|
- 0.4.1
|
|
- Documentation and formatting fixes.
|
|
- 0.4.0
|
|
- [#61](https://github.com/petgraph/fixedbitset/pull/61): Require
|
|
Rust 1.39.
|
|
- [#60](https://github.com/petgraph/fixedbitset/pull/60): Add
|
|
`const` `FixedBitSet::new` consructor
|
|
by \@jakobhellermann.
|
|
- [#59](https://github.com/petgraph/fixedbitset/pull/59): Add
|
|
optional `serde` support by \@keshavsn.
|
|
- 0.3.2
|
|
- [#18](https://github.com/petgraph/fixedbitset/pull/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](https://www.apache.org/licenses/LICENSE-2.0)
|
|
or the [MIT license](https://opensource.org/licenses/MIT),
|
|
at your option. This file may not be copied, modified, or distributed except
|
|
according to those terms.
|