1fixedbitset 2--- 3 4A simple fixed size bitset container for Rust. 5 6Please read the [API documentation here](https://docs.rs/fixedbitset/) 7 8[](https://github.com/petgraph/fixedbitset/actions) 9[](https://crates.io/crates/fixedbitset) 10 11# Recent Changes 12 13- 0.5.7 14 - [#127](https://github.com/petgraph/fixedbitset/pull/127) and [#128](https://github.com/petgraph/fixedbitset/pull/128): Optimize `Clone::clone_from` to avoid 15 extra allocations and copies. 16- 0.5.6 17 - Fixed FixedBitset not implementing Send/Sync due to the stack size shrink. 18- 0.5.5 (yanked) 19 - [#116](https://github.com/petgraph/fixedbitset/pull/116): Add functions for counting the results of a set operation (`union_count`, 20 `intersection_count`, `difference_count`, `symmetric_difference_count`) by @james7132. 21 - [#118](https://github.com/petgraph/fixedbitset/pull/118): Shrink the stack size of FixedBitset. There should be zero stack size overhead 22 compared to a Vec. 23 - [#119](https://github.com/petgraph/fixedbitset/pull/119): Fix builds for wasm32. 24 - [#120](https://github.com/petgraph/fixedbitset/pull/119): Add more utility functions that were previously missing from the public interface: 25 `contains_any_in_range`, `contains_all_in_range`, `minimum`, `maximum`, `is_full`, `count_zeroes`, and `remove_range`. 26 - [#121](https://github.com/petgraph/fixedbitset/pull/121): Add support for SIMD acceleration for AVX builds. 27- 0.5.4 28 - [#112](https://github.com/petgraph/fixedbitset/pull/112): Fix undefined behavior in IntoOnes and setup testing with MIRI by @SkiFire13 29- 0.5.3 (yanked) 30 - [#109](https://github.com/petgraph/fixedbitset/pull/109): Fix non-x86(_64) builds by @james7132 31- 0.5.2 (yanked) 32 - [#86](https://github.com/petgraph/fixedbitset/pull/86): Explicit SIMD vectorization for set operations by @james7132. 33- 0.5.1 34 - [#102](https://github.com/petgraph/fixedbitset/pull/102): Added `contains_unchecked`, `insert_unchecked`, `put_unchecked`, 35 `set_unchecked`, `toggle_unchecked`, `removed_unchecked`, `copy_bit_unchecked` unsafe variants of the safe functions, by @james7132 36 - [#103](https://github.com/petgraph/fixedbitset/pull/103): Added `into_ones` which returns a owned iterator over the one 37 values from a bitset, by @james7132. 38 - [#104](https://github.com/petgraph/fixedbitset/pull/104): Implemented `DoubleEndedIterator` for `Union`, `Intersection`, 39 `Difference`, and `SymmetricDifference` , by @james7132. 40- 0.5.0 41 - [#74](https://github.com/petgraph/fixedbitset/pull/74): Accelerated set operations (union, intersection, difference, 42 symmetric difference) by using larger blocks internally, by @james7132. 43 - [#88](https://github.com/petgraph/fixedbitset/pull/88): Added `FixedBitSet::remove` by @james7132. 44 - [#89](https://github.com/petgraph/fixedbitset/pull/89): Added `FixedBitSet::zeros` and the `Zeros` iterator by @james7132. 45 - [#92](https://github.com/petgraph/fixedbitset/pull/92): Added `FixedBitSet::grow_and_insert` function, a 46 non-panicking version of `insert` that grows the underlying storage as need, by @shuoli84. 47 - [#98](https://github.com/petgraph/fixedbitset/pull/98): `Ones` now implements `DoubleEndedIterator`, by @tikhu. 48 - [#99](https://github.com/petgraph/fixedbitset/pull/99): **Breaking change**: serde now serializes and deserializes from a little-endian encoded 49 raw byte buffer. Existing stored instances of the serialized bitsets will need to be 50 re-encoded. 51 - Bumped MSRV to 1.56. 52- 0.4.2 53 - [#79](https://github.com/petgraph/fixedbitset/pull/79): Add `is_clear`, 54 clarify `is_empty` and `len` documentation by \@nicopap. 55- 0.4.1 56 - Documentation and formatting fixes. 57- 0.4.0 58 - [#61](https://github.com/petgraph/fixedbitset/pull/61): Require 59 Rust 1.39. 60 - [#60](https://github.com/petgraph/fixedbitset/pull/60): Add 61 `const` `FixedBitSet::new` consructor 62 by \@jakobhellermann. 63 - [#59](https://github.com/petgraph/fixedbitset/pull/59): Add 64 optional `serde` support by \@keshavsn. 65- 0.3.2 66 - [#18](https://github.com/petgraph/fixedbitset/pull/18): Optimize 67 `ones` using `trailing_zeroes` by \@vks 68- 0.3.1 69 - Add bit assign operators for references by \@flaghacker 70 - Improve assertion error messages by \@lovasoa 71 - Add documentation examples for `with_capacity_and_blocks` 72- 0.3.0 73 - Add `with_capacity_and_blocks` by \@luizirber 74 - Add `difference_with` by \@sunshowers 75 - Implement `Binary` and `Display` traits by \@Dolphindalt 76 - Add `toggle_range` by \@wirelyre 77- 0.2.0 78 - Add assign operators for the bit operations by \@jrraymond 79 - Add `symmetric_difference`, `union_with`, `intersection_with` by 80 \@jrraymond 81 - Add `is_subset`, `is_superset`, `is_disjoint` by \@nwn 82 - Add `.toggle(i)` method by \@ShiroUsagi-san 83 - Add default feature \"std\" which can be disabled to make the 84 crate not link the std library. By \@jonimake and \@bluss 85 - Require Rust 1.31. 86- 0.1.9 87 - Add intersection, union, difference iterators by \@jrraymond 88 - Add intersection: `&` and union: `|` operator implementations by 89 \@jrraymond 90 - Add Extend and FromIterator implementations (from sequences of 91 bit indices) by \@jrraymond 92- 0.1.8 93 - Add missing `#[inline]` on the ones iterator 94 - Fix docs for `insert_range, set_range` 95- 0.1.7 96 - Add fast methods `.insert_range`, `.set_range` by \@kennytm 97- 0.1.6 98 - Add iterator `.ones()` by \@mneumann 99 - Fix bug with `.count_ones()` where it would erronously have an 100 out-of-bounds panic for even block endpoints 101- 0.1.5 102 - Add method `.count_ones(range)`. 103- 0.1.4 104 - Remove an assertion in `.copy_bit(from, to)` so that it is in 105 line with the documentation. The `from` bit does not need to be 106 in bounds. 107 - Improve `.grow()` to use `Vec::resize` internally. 108- 0.1.3 109 - Add method `.put()` to enable a bit and return previous value 110- 0.1.2 111 - Add method `.copy_bit()` (by fuine) 112 - impl Default 113- 0.1.1 114 - Update documentation URL 115- 0.1.0 116 - Add method `.grow()` 117 118# License 119 120Dual-licensed to be compatible with the Rust project. 121 122Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) 123 or the [MIT license](https://opensource.org/licenses/MIT), 124 at your option. This file may not be copied, modified, or distributed except 125according to those terms. 126