Expand description
Bitset implementation.
Bitsets are powered by the bitset_core crate.
A Bones bitset is a vector of 32-byte sectors. The size of a bitset can be controlled by the
keysize* features (note that they are all mutually exclusive with each other). The keysize
is exponentially correlated to the number of bits, or entities, that the set can track; where
the number of bits equals two raised to the power of keysize. Below are the available
keysizes and the size of their resulting bitsets.
| Keysize | Bit Count | Sectors | Memory |
|---|---|---|---|
| 32 | 4 billion | 16 million | 512 MB |
| 24 | 16 million | 65536 | 2 MB |
| 20 | 1 million | 4096 | 128 KB |
| 16 | 65536 | 256 | 8 KB |
| 12 | 4096 | 16 | 512 B |
| 10 | 1024 | 4 | 128 B |
Keysize (K) refers to the name of the feature. A keysize of 16 refers to the keysize16
feature.
Bit Count is the total number of bits in the bitset (2^K). Due to the nature of binary
numbers this means that a value with more than K bits should not be used to index into the
bitset since e.g. u16::MAX is the index of the last bit in a keysize16 bitset.
Sectors is the number of sub-arrays within the bitset Vec. Sectors are 256 bits as they are
comprised of 8 u32s. Note that SIMD instructions process 256 bits/entities at a time.
Memory is the total amount of memory that the bitset will occupy.
Macros§
- Shorthand for combining bitsets with bit_or.
- Shorthand for setting bits on the bitset container.
- Implements the
BitSettrait members for your type throughDerefMut.
Structs§
- BitSet formatter.
- The type of bitsets used to track entities in component storages. Mostly used to create caches.
Constants§
Traits§
- The BitSet API.
Functions§
- Creates a bitset big enough to contain the index of each entity. Mostly used to create caches.