Struct columnar::adts::json::Jsons

source ·
pub struct Jsons {
    pub roots: Vec<JsonIdx>,
    pub numbers: Vec<Number>,
    pub strings: Lookbacks<Strings>,
    pub arrays: Vecs<Vec<JsonIdx>>,
    pub objects: Vecs<(Lookbacks<Strings>, Vec<JsonIdx>)>,
}
Expand description

Stand-in for Vec<Json>.

This approach uses indexes which contains discriminants, which should allow an efficient representation of offset information. Unfortunately, both arrays and objects just list their intended offsets directly, rather than encode the offsets using unary degree sequences, which seemed hard to thread through the other abstractions. Their Vec<usize> container can probably be made smarter, in particular by an Option<usize> container where None indicates increment. Stand-in for Vec<Json>.

The roots vector indicates the root of each stored Json. The (transitive) contents of each Json are stored throughout, at locations that may not necessarily be found in roots.

Fields§

§roots: Vec<JsonIdx>§numbers: Vec<Number>§strings: Lookbacks<Strings>§arrays: Vecs<Vec<JsonIdx>>§objects: Vecs<(Lookbacks<Strings>, Vec<JsonIdx>)>

Implementations§

source§

impl Jsons

source

pub fn dereference(&self, index: JsonIdx) -> JsonsRef<'_>

Trait Implementations§

source§

impl Clone for Jsons

source§

fn clone(&self) -> Jsons

Returns a copy 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 Jsons

source§

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

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

impl Default for Jsons

source§

fn default() -> Jsons

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

impl<'de> Deserialize<'de> for Jsons

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl HeapSize for Jsons

source§

fn heap_size(&self) -> (usize, usize)

Active (len) and allocated (cap) heap sizes in bytes. This should not include the size of self itself.
source§

impl<'a> Index for &'a Jsons

§

type Ref = JsonsRef<'a>

The type returned by the get method. Read more
source§

fn get(&self, index: usize) -> Self::Ref

source§

fn last(&self) -> Option<Self::Ref>
where Self: Len,

source§

fn iter(&self) -> IterOwn<&Self>

source§

fn into_iter(self) -> IterOwn<Self>
where Self: Sized,

source§

impl Len for Jsons

source§

fn len(&self) -> usize

The number of contained elements.
source§

fn is_empty(&self) -> bool

Whether this contains no elements.
source§

impl PartialEq for Jsons

source§

fn eq(&self, other: &Jsons) -> 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<'a> Push<&'a Json> for Jsons

source§

fn push(&mut self, json: &'a Json)

Pushes an item onto self.
source§

fn extend(&mut self, jsons: impl IntoIterator<Item = &'a Json>)

Pushes elements of an iterator onto self.
source§

impl Push<Json> for Jsons

source§

fn push(&mut self, json: Json)

Pushes an item onto self.
source§

fn extend(&mut self, iter: impl IntoIterator<Item = T>)

Pushes elements of an iterator onto self.
source§

impl Serialize for Jsons

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Jsons

Auto Trait Implementations§

§

impl Freeze for Jsons

§

impl RefUnwindSafe for Jsons

§

impl Send for Jsons

§

impl Sync for Jsons

§

impl Unpin for Jsons

§

impl UnwindSafe for Jsons

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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

impl<T> CopyAs<T> for T

source§

fn copy_as(self) -> T

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,

§

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>,

§

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>,

§

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,