Skip to main content

IdGenerator

Struct IdGenerator 

Source
pub struct IdGenerator { /* private fields */ }
Expand description

A monotonic ID generator.

Generates unique, monotonically increasing IDs. The generator is thread-safe and can be shared across threads. IDs start from 1 (0 is reserved for “no ID”).

§Persistence

The generator can be initialized with the highest existing ID to resume after a restart. Use IdGenerator::with_start to set the starting value.

§Example

use manifoldb_graph::store::IdGenerator;

let gen = IdGenerator::new();
let id1 = gen.next_entity_id();
let id2 = gen.next_entity_id();
assert!(id1.as_u64() < id2.as_u64());

Implementations§

Source§

impl IdGenerator

Source

pub const fn new() -> Self

Create a new ID generator starting from 1.

Source

pub const fn with_start(entity_start: u64, edge_start: u64) -> Self

Create an ID generator starting from specific values.

Use this to resume ID generation after loading existing data. The provided values should be one greater than the highest existing IDs.

§Arguments
  • entity_start - The first entity ID to generate
  • edge_start - The first edge ID to generate
Source

pub fn next_entity_id(&self) -> EntityId

Generate the next entity ID.

This operation is atomic and thread-safe.

Source

pub fn next_edge_id(&self) -> EdgeId

Generate the next edge ID.

This operation is atomic and thread-safe.

Source

pub fn current_entity_counter(&self) -> u64

Get the current entity ID counter value (next ID to be assigned).

Source

pub fn current_edge_counter(&self) -> u64

Get the current edge ID counter value (next ID to be assigned).

Source

pub fn reset_entity_counter(&self, value: u64)

Reset the entity ID counter to a new value.

This is primarily used for testing or when rebuilding indexes.

Source

pub fn reset_edge_counter(&self, value: u64)

Reset the edge ID counter to a new value.

This is primarily used for testing or when rebuilding indexes.

Trait Implementations§

Source§

impl Debug for IdGenerator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for IdGenerator

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more