matrix_sdk_base::linked_chunk

Enum Update

Source
pub enum Update<Item, Gap> {
    NewItemsChunk {
        previous: Option<ChunkIdentifier>,
        new: ChunkIdentifier,
        next: Option<ChunkIdentifier>,
    },
    NewGapChunk {
        previous: Option<ChunkIdentifier>,
        new: ChunkIdentifier,
        next: Option<ChunkIdentifier>,
        gap: Gap,
    },
    RemoveChunk(ChunkIdentifier),
    PushItems {
        at: Position,
        items: Vec<Item>,
    },
    RemoveItem {
        at: Position,
    },
    DetachLastItems {
        at: Position,
    },
    StartReattachItems,
    EndReattachItems,
    Clear,
}
Expand description

Represent the updates that have happened inside a LinkedChunk.

To retrieve the updates, use LinkedChunk::updates.

These updates are useful to store a LinkedChunk in another form of storage, like a database or something similar.

Variants§

§

NewItemsChunk

A new chunk of kind Items has been created.

Fields

§previous: Option<ChunkIdentifier>

The identifier of the previous chunk of this new chunk.

§new: ChunkIdentifier

The identifier of the new chunk.

§next: Option<ChunkIdentifier>

The identifier of the next chunk of this new chunk.

§

NewGapChunk

A new chunk of kind Gap has been created.

Fields

§previous: Option<ChunkIdentifier>

The identifier of the previous chunk of this new chunk.

§new: ChunkIdentifier

The identifier of the new chunk.

§next: Option<ChunkIdentifier>

The identifier of the next chunk of this new chunk.

§gap: Gap

The content of the chunk.

§

RemoveChunk(ChunkIdentifier)

A chunk has been removed.

§

PushItems

Items are pushed inside a chunk of kind Items.

Fields

§at: Position

The Position of the items.

This value is given to prevent the need for position computations by the update readers. Items are pushed, so the positions should be incrementally computed from the previous items, which requires the reading of the last previous item. With at, the update readers no longer need to do so.

§items: Vec<Item>

The items.

§

RemoveItem

An item has been removed inside a chunk of kind Items.

Fields

§at: Position

The Position of the item.

§

DetachLastItems

The last items of a chunk have been detached, i.e. the chunk has been truncated.

Fields

§at: Position

The split position. Before this position (..position), items are kept, from this position (position..), items are detached.

§

StartReattachItems

Detached items (see Self::DetachLastItems) starts being reattached.

§

EndReattachItems

Reattaching items (see Self::StartReattachItems) is finished.

§

Clear

All chunks have been cleared, i.e. all items and all gaps have been dropped.

Trait Implementations§

Source§

impl<Item, Gap> Clone for Update<Item, Gap>
where Item: Clone, Gap: Clone,

Source§

fn clone(&self) -> Update<Item, Gap>

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<Item, Gap> Debug for Update<Item, Gap>
where Item: Debug, Gap: Debug,

Source§

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

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

impl<Item, Gap> PartialEq for Update<Item, Gap>
where Item: PartialEq, Gap: PartialEq,

Source§

fn eq(&self, other: &Update<Item, Gap>) -> 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<Item, Gap> StructuralPartialEq for Update<Item, Gap>

Auto Trait Implementations§

§

impl<Item, Gap> Freeze for Update<Item, Gap>
where Gap: Freeze,

§

impl<Item, Gap> RefUnwindSafe for Update<Item, Gap>
where Gap: RefUnwindSafe, Item: RefUnwindSafe,

§

impl<Item, Gap> Send for Update<Item, Gap>
where Gap: Send, Item: Send,

§

impl<Item, Gap> Sync for Update<Item, Gap>
where Gap: Sync, Item: Sync,

§

impl<Item, Gap> Unpin for Update<Item, Gap>
where Gap: Unpin, Item: Unpin,

§

impl<Item, Gap> UnwindSafe for Update<Item, Gap>
where Gap: UnwindSafe, Item: UnwindSafe,

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, dst: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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
Source§

impl<T> AsyncTraitDeps for T

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> SendOutsideWasm for T
where T: Send,

Source§

impl<T> SyncOutsideWasm for T
where T: Sync,