Module bitset

Module bitset 

Source
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.

KeysizeBit CountSectorsMemory
324 billion16 million512 MB
2416 million655362 MB
201 million4096128 KB
16655362568 KB
12409616512 B
1010244128 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§

bitor
Shorthand for combining bitsets with bit_or.
bitset
Shorthand for setting bits on the bitset container.
impl_bitset
Implements the BitSet trait members for your type through DerefMut.

Structs§

BitFmt
BitSet formatter.
BitSetVec
The type of bitsets used to track entities in component storages. Mostly used to create caches.

Constants§

BITSET_EXP

Traits§

BitSet
The BitSet API.

Functions§

create_bitset
Creates a bitset big enough to contain the index of each entity. Mostly used to create caches.