Skip to main content

set

Function set 

Source
pub fn set(ko: u64, offset: u32, mask: u64, value: u64) -> u64
Expand description

Writes a field into a key object record, returning the updated value. Adjacent fields are not affected.

ยงExamples

use state_engine::common::bit;

let ko = bit::new();

// set root index to 0b01 (load)
let ko = bit::set(ko, bit::OFFSET_ROOT, bit::MASK_ROOT, 0b01);
assert_eq!(bit::get(ko, bit::OFFSET_ROOT, bit::MASK_ROOT), 0b01);

// set client index to 0b0101 (Db), root must be unchanged
let ko = bit::set(ko, bit::OFFSET_CLIENT, bit::MASK_CLIENT, 0b0101);
assert_eq!(bit::get(ko, bit::OFFSET_CLIENT, bit::MASK_CLIENT), 0b0101);
assert_eq!(bit::get(ko, bit::OFFSET_ROOT, bit::MASK_ROOT), 0b01);

// overwrite clamps to field width
let ko = bit::set(ko, bit::OFFSET_ROOT, bit::MASK_ROOT, 0xFF);
assert_eq!(bit::get(ko, bit::OFFSET_ROOT, bit::MASK_ROOT), 0b11);