Skip to main content

Context

Struct Context 

Source
pub struct Context<T> { /* private fields */ }
Expand description

A Context holds a set of interned IDs for use during serialization/deserialization, mapping IDs to u16 indices.

§Upcoming Changes

  1. This object holds an Arc of Mutex internally because we need concurrent access from the layout writer code path. We should update SegmentSink to take an Array rather than ByteBuffer such that serializing arrays is done sequentially.
  2. The name is terrible. Interner<T> is better, but I want to minimize breakage for now.

Implementations§

Source§

impl<T: Clone> Context<T>

Source

pub fn new(ids: Vec<Id>) -> Self

Create a context with the given initial IDs.

Source

pub fn empty() -> Self

Create an empty context.

Source

pub fn with_registry(self, registry: Registry<T>) -> Self

Configure a registry to restrict the permissible set of interned items.

Source

pub fn intern(&self, id: &Id) -> Option<u16>

Intern an ID, returning its index.

Source

pub fn resolve(&self, idx: u16) -> Option<Id>

Resolve an interned ID by its index.

Source

pub fn to_ids(&self) -> Vec<Id>

Get the list of interned IDs.

Trait Implementations§

Source§

impl<T: Clone> Clone for Context<T>

Source§

fn clone(&self) -> Context<T>

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<T: Debug> Debug for Context<T>

Source§

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

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

impl<T> Default for Context<T>

Source§

fn default() -> Self

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

Auto Trait Implementations§

§

impl<T> Freeze for Context<T>

§

impl<T> !RefUnwindSafe for Context<T>

§

impl<T> Send for Context<T>
where T: Send + Sync,

§

impl<T> Sync for Context<T>
where T: Send + Sync,

§

impl<T> Unpin for Context<T>

§

impl<T> UnsafeUnpin for Context<T>

§

impl<T> !UnwindSafe for Context<T>

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> SessionVar for T
where T: Send + Sync + Debug + 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

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.