Trait bitmap::Element [] [src]

pub trait Element: Sized {
    type W: Copy;
    type R: Copy;
    fn width(Self::W) -> usize;
    fn from_bits(bits: u64) -> Option<Self::R>;
    fn to_bits(Self::R) -> u64;
}

The "element type" of a bitmap

Types implementing this trait can be stored in a bitmap. However, you shouldn't need to implement this trait yourself if you only care about semantics-free bits: use one of the fixed-width types defined here, such as OneBit, TwoBits, etc, or the DynamicWidth type.

However, this can be used to make the Bitmap strongly typed storage for types such as those generated by the bitflags! macro.

Associated Types

type W: Copy

Type passed to the width method.

type R: Copy

Type decoded from from_bits and thus Bitmap::get.

Required Methods

fn width(Self::W) -> usize

Return the width of values of this type, in bits.

This method is called somewhat frequently, on almost every access to the Bitmap. However, the value it is passed is only ever specified in one place: Bitmap::from_storage.

This should never return a value greater than 64, and should always return the same value for the same Bitmap.

fn from_bits(bits: u64) -> Option<Self::R>

Decode a value from raw bits.

fn to_bits(Self::R) -> u64

Encode a value into raw bits.

No bits outside of the least significant Element::width(w) bits should be set.

Implementors