slots_storage - [mainnet]
use 0x1::table;Enum Link
enum Link<T: store> has storeVariants
Some
Fields
- 
value: T 
Empty
Fields
- 
next: u64 
Constants
const NULL_INDEX: u64 = 0;Structs
SlotsStorage
struct SlotsStorage<T: store> has storeFields
- 
slots: table::Table<u64, slots_storage::Link<T>> - 
new_slot_index: u64 - 
never_deallocate: bool - 
reuse_head_index: u64 
TransientSlot
struct TransientSlotFields
- 
slot_index: u64 
Functions
new_storage_slots
public fun new_storage_slots<T: store>(): slots_storage::SlotsStorage<T>Implementation
public fun new_storage_slots<T: store>(): SlotsStorage<T> {    SlotsStorage {        slots: table::new(),        new_slot_index: 1,        never_deallocate: false,        reuse_head_index: NULL_INDEX,    }}add
public fun add<T: store>(self: &mut slots_storage::SlotsStorage<T>, val: T): u64Implementation
public fun add<T: store>(self: &mut SlotsStorage<T>, val: T): u64 {    let slot_index = self.new_slot_index;    self.new_slot_index = self.new_slot_index + 1;    self.slots.add(slot_index, Link::Some { value: val });    slot_index}remove
public fun remove<T: store>(self: &mut slots_storage::SlotsStorage<T>, slot_index: u64): TImplementation
public fun remove<T: store>(self: &mut SlotsStorage<T>, slot_index: u64): T {    let Link::Some { value } = self.slots.remove(slot_index);    value}destroy_empty
public fun destroy_empty<T: store>(self: slots_storage::SlotsStorage<T>)Implementation
public fun destroy_empty<T: store>(self: SlotsStorage<T>) {    let SlotsStorage {        slots,        new_slot_index: _,        never_deallocate: _,        reuse_head_index: _,    } = self;    slots.destroy_empty();}borrow
public fun borrow<T: store>(self: &slots_storage::SlotsStorage<T>, slot_index: u64): &TImplementation
public fun borrow<T: store>(self: &SlotsStorage<T>, slot_index: u64): &T {    &self.slots.borrow(slot_index).value}borrow_mut
public fun borrow_mut<T: store>(self: &mut slots_storage::SlotsStorage<T>, slot_index: u64): &mut TImplementation
public fun borrow_mut<T: store>(self: &mut SlotsStorage<T>, slot_index: u64): &mut T {    &mut self.slots.borrow_mut(slot_index).value}get_index
public fun get_index(self: &slots_storage::TransientSlot): u64Implementation
public fun get_index(self: &TransientSlot): u64 {    self.slot_index}create_transient_slot
public fun create_transient_slot<T: store>(self: &mut slots_storage::SlotsStorage<T>): slots_storage::TransientSlotImplementation
public fun create_transient_slot<T: store>(self: &mut SlotsStorage<T>): TransientSlot {    let slot_index = self.new_slot_index;    self.new_slot_index = self.new_slot_index + 1;    TransientSlot {        slot_index,    }}add_transient_slot
public fun add_transient_slot<T: store>(self: &mut slots_storage::SlotsStorage<T>, slot: slots_storage::TransientSlot, val: T)Implementation
public fun add_transient_slot<T: store>(self: &mut SlotsStorage<T>, slot: TransientSlot, val: T) {    let TransientSlot { slot_index } = slot;    self.slots.add(slot_index, Link::Some { value: val });}transiently_remove
public fun transiently_remove<T: store>(self: &mut slots_storage::SlotsStorage<T>, slot_index: u64): (slots_storage::TransientSlot, T)Implementation
public fun transiently_remove<T: store>(self: &mut SlotsStorage<T>, slot_index: u64): (TransientSlot, T) {    let Link::Some { value } = self.slots.remove(slot_index);    (TransientSlot { slot_index }, value)}destroy_transient_slot
public fun destroy_transient_slot(self: slots_storage::TransientSlot)Implementation
public fun destroy_transient_slot(self: TransientSlot) {    let TransientSlot { slot_index: _ } = self;}