Skip to main content

Allocator

Struct Allocator 

Source
pub struct Allocator {
    blocks: u32,
    pins: u32,
    routes: u32,
    route_labels: u32,
    texts: u32,
    areas: u32,
    images: u32,
}
Expand description

Per-kind high-water marks: the largest id of each kind the document has ever held, minted or folded. Never stored — a loaded document derives them from its own content — so there is no durable counter to run backwards and no invariant for the fold to police.

Fields§

§blocks: u32§pins: u32§routes: u32§route_labels: u32§texts: u32§areas: u32§images: u32

Implementations§

Source§

impl Allocator

Source

pub fn raise_to(&mut self, other: &Allocator)

Raise every mark to other’s. Marks only ever rise, so merging two views of the same document cannot hand out an id either of them has already given.

Source

pub fn observe(&mut self, target: EntityRef)

Record that target exists, so it is never minted again.

Source§

impl Allocator

Source

pub fn mint<K: IdKind>(&mut self) -> Id<K>

The next id of its kind, counting from 1 — Id::NULL is the document root and must stay distinguishable from a minted id.

Source

fn raise<K: IdKind>(&mut self, id: Id<K>)

Trait Implementations§

Source§

impl Clone for Allocator

Source§

fn clone(&self) -> Allocator

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Allocator

Source§

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

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

impl Default for Allocator

Source§

fn default() -> Allocator

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

impl PartialEq for Allocator

Source§

fn eq(&self, other: &Allocator) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Allocator

Source§

impl Eq for Allocator

Source§

impl StructuralPartialEq for Allocator

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.