27 releases
0.5.7 | Apr 14, 2024 |
---|---|
0.5.6 | Mar 22, 2024 |
0.5.0 | Feb 26, 2024 |
0.4.2 | Jul 3, 2022 |
0.0.5 | May 31, 2015 |
#42 in Data structures
5,308,194 downloads per month
Used in 6,104 crates
(88 directly)
84KB
2K
SLoC
fixedbitset
A simple fixed size bitset container for Rust.
Please read the API documentation here
Recent Changes
- 0.5.7
- 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
, andremove_range
. - #121: Add support for SIMD acceleration for AVX builds.
- #116: Add functions for counting the results of a set operation (
- 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
forUnion
,Intersection
,Difference
, andSymmetricDifference
, by @james7132.
- #102: Added
- 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 theZeros
iterator by @james7132. - #92: Added
FixedBitSet::grow_and_insert
function, a non-panicking version ofinsert
that grows the underlying storage as need, by @shuoli84. - #98:
Ones
now implementsDoubleEndedIterator
, 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
, clarifyis_empty
andlen
documentation by @nicopap.
- #79: Add
- 0.4.1
- Documentation and formatting fixes.
- 0.4.0
- 0.3.2
- #18: Optimize
ones
usingtrailing_zeroes
by @vks
- #18: Optimize
- 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
andDisplay
traits by @Dolphindalt - Add
toggle_range
by @wirelyre
- Add
- 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
- Add missing
- 0.1.7
- Add fast methods
.insert_range
,.set_range
by @kennytm
- Add fast methods
- 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
- Add iterator
- 0.1.5
- Add method
.count_ones(range)
.
- Add method
- 0.1.4
- Remove an assertion in
.copy_bit(from, to)
so that it is in line with the documentation. Thefrom
bit does not need to be in bounds. - Improve
.grow()
to useVec::resize
internally.
- Remove an assertion in
- 0.1.3
- Add method
.put()
to enable a bit and return previous value
- Add method
- 0.1.2
- Add method
.copy_bit()
(by fuine) - impl Default
- Add method
- 0.1.1
- Update documentation URL
- 0.1.0
- Add method
.grow()
- Add method
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
~170KB