#[non_exhaustive]pub enum ExportMode<'a> {
Snapshot,
Updates {
from: Cow<'a, VersionVector>,
},
UpdatesInRange {
spans: Cow<'a, [IdSpan]>,
},
ShallowSnapshot(Cow<'a, Frontiers>),
StateOnly(Option<Cow<'a, Frontiers>>),
SnapshotAt {
version: Cow<'a, Frontiers>,
},
}
Expand description
The mode of the export.
Loro CRDT internally consists of two parts: document history and current document state. The export modes offer various options to meet different requirements.
- CRDT property: Documents maintain consistent states when they receive the same set of updates.
- In real-time collaboration, peers typically only need to synchronize updates (operations/history) to achieve consistency.
§Update Export
- Exports only the history part, containing multiple operations.
- Suitable for real-time collaboration scenarios where peers only need to synchronize updates.
§Snapshot Export
§Default Snapshot
- Includes complete history and current full state.
§Shallow Snapshot
- Contains the complete current state.
- Retains partial history starting from a specified version.
§State-only Snapshot
- Exports the state of the target version.
- Includes a minimal set of operation history.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Snapshot
It contains the full history and the current state of the document.
Updates
It contains the history since the from
version vector.
Fields
from: Cow<'a, VersionVector>
UpdatesInRange
This mode exports the history in the specified range.
ShallowSnapshot(Cow<'a, Frontiers>)
The shallow snapshot only contains the history since the target frontiers
StateOnly(Option<Cow<'a, Frontiers>>)
The state only snapshot exports the state of the target version with a minimal set of history (a few ops).
It’s a shallow snapshot with depth=1 at the target version. If the target version is None, it will use the latest version as the target version.
SnapshotAt
The snapshot at the specified frontiers. It contains the full history till the target frontiers and the state at the target frontiers.
Implementations§
Source§impl<'a> ExportMode<'a>
impl<'a> ExportMode<'a>
Sourcepub fn updates(from: &'a VersionVector) -> Self
pub fn updates(from: &'a VersionVector) -> Self
It contains the history since the from
version vector.
Sourcepub fn updates_owned(from: VersionVector) -> Self
pub fn updates_owned(from: VersionVector) -> Self
It contains the history since the from
version vector.
Sourcepub fn all_updates() -> Self
pub fn all_updates() -> Self
It contains all the history of the document.
Sourcepub fn updates_in_range(spans: impl Into<Cow<'a, [IdSpan]>>) -> Self
pub fn updates_in_range(spans: impl Into<Cow<'a, [IdSpan]>>) -> Self
This mode exports the history in the specified range.
Sourcepub fn shallow_snapshot(frontiers: &'a Frontiers) -> Self
pub fn shallow_snapshot(frontiers: &'a Frontiers) -> Self
The shallow snapshot only contains the history since the target frontiers.
Sourcepub fn shallow_snapshot_owned(frontiers: Frontiers) -> Self
pub fn shallow_snapshot_owned(frontiers: Frontiers) -> Self
The shallow snapshot only contains the history since the target frontiers.
Sourcepub fn shallow_snapshot_since(id: ID) -> Self
pub fn shallow_snapshot_since(id: ID) -> Self
The shallow snapshot only contains the history since the target frontiers.
Sourcepub fn state_only(frontiers: Option<&'a Frontiers>) -> Self
pub fn state_only(frontiers: Option<&'a Frontiers>) -> Self
The state only snapshot exports the state of the target version with a minimal set of history (a few ops).
It’s a shallow snapshot with depth=1 at the target version. If the target version is None, it will use the latest version as the target version.
Sourcepub fn snapshot_at(frontiers: &'a Frontiers) -> Self
pub fn snapshot_at(frontiers: &'a Frontiers) -> Self
The snapshot at the specified frontiers. It contains the full history till the target frontiers and the state at the target frontiers.
Sourcepub fn updates_till(vv: &VersionVector) -> ExportMode<'static>
pub fn updates_till(vv: &VersionVector) -> ExportMode<'static>
This mode exports the history within the specified version vector.
Trait Implementations§
Source§impl<'a> Clone for ExportMode<'a>
impl<'a> Clone for ExportMode<'a>
Source§fn clone(&self) -> ExportMode<'a>
fn clone(&self) -> ExportMode<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<'a> Freeze for ExportMode<'a>
impl<'a> RefUnwindSafe for ExportMode<'a>
impl<'a> Send for ExportMode<'a>
impl<'a> Sync for ExportMode<'a>
impl<'a> Unpin for ExportMode<'a>
impl<'a> UnwindSafe for ExportMode<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute
value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
Quirk
value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition
value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);