Struct LoroDoc

Source
pub struct LoroDoc { /* private fields */ }
Expand description

LoroDoc serves as the library’s primary entry point. It’s constituted by an OpLog and an DocState.

  • OpLog encompasses all operations, signifying the document history.
  • DocState signifies the current document state.

They will share a [super::arena::SharedArena]

§Detached Mode

This mode enables separate usage of OpLog and DocState. It facilitates temporal navigation. DocState can be reverted to any version contained within the OpLog.

LoroDoc::detach() separates DocState from OpLog. In this mode, updates to OpLog won’t affect DocState, while updates to DocState will continue to affect OpLog.

Implementations§

Source§

impl LoroDoc

Source

pub fn decode_import_blob_meta( blob: &[u8], check_checksum: bool, ) -> LoroResult<ImportBlobMetadata>

Decodes the metadata for an imported blob from the provided bytes.

Source§

impl LoroDoc

Source

pub fn fork_at(&self, frontiers: &Frontiers) -> Self

Creates a new LoroDoc at a specified version (Frontiers)

Source§

impl LoroDoc

Source

pub fn new() -> Self

Source

pub fn fork(&self) -> Self

Source

pub fn set_detached_editing(&self, enable: bool)

Enables editing of the document in detached mode.

By default, the document cannot be edited in detached mode (after calling detach or checking out a version other than the latest). This method allows editing in detached mode.

§Important Notes:
  • After enabling this mode, the document will use a different PeerID. Each time you call checkout, a new PeerID will be used.
  • If you set a custom PeerID while this mode is enabled, ensure that concurrent operations with the same PeerID are not possible.
  • On detached mode, importing will not change the state of the document. It also doesn’t change the version of the DocState. The changes will be recorded into OpLog only. You need to call checkout to make it take effect.
Source

pub fn new_auto_commit() -> Self

Create a doc with auto commit enabled.

Source

pub fn set_peer_id(&self, peer: PeerID) -> LoroResult<()>

Source

pub fn commit_then_stop( &self, ) -> (Option<CommitOptions>, LoroMutexGuard<'_, Option<Transaction>>)

Commit the cumulative auto commit transaction. This method only has effect when auto_commit is true.

Afterwards, the users need to call self.renew_txn_after_commit() to resume the continuous transaction.

It only returns Some(options_of_the_empty_txn) when the txn is empty

Source

pub fn commit_then_renew(&self) -> Option<CommitOptions>

Commit the cumulative auto commit transaction. It will start the next one immediately

It only returns Some(options_of_the_empty_txn) when the txn is empty

Source

pub fn commit_with( &self, config: CommitOptions, ) -> (Option<CommitOptions>, Option<LoroMutexGuard<'_, Option<Transaction>>>)

Commit the cumulative auto commit transaction. This method only has effect when auto_commit is true. If immediate_renew is true, a new transaction will be created after the old one is committed

It only returns Some(options_of_the_empty_txn) when the txn is empty

Source

pub fn set_next_commit_message(&self, message: &str)

Set the commit message of the next commit

Source

pub fn set_next_commit_origin(&self, origin: &str)

Set the origin of the next commit

Source

pub fn set_next_commit_timestamp(&self, timestamp: Timestamp)

Set the timestamp of the next commit

Source

pub fn set_next_commit_options(&self, options: CommitOptions)

Set the options of the next commit

Source

pub fn clear_next_commit_options(&self)

Clear the options of the next commit

Source

pub fn set_record_timestamp(&self, record: bool)

Set whether to record the timestamp of each change. Default is false.

If enabled, the Unix timestamp will be recorded for each change automatically.

You can also set each timestamp manually when you commit a change. The timestamp manually set will override the automatic one.

NOTE: Timestamps are forced to be in ascending order. If you commit a new change with a timestamp that is less than the existing one, the largest existing timestamp will be used instead.

Source

pub fn set_change_merge_interval(&self, interval: i64)

Set the interval of mergeable changes, in seconds.

If two continuous local changes are within the interval, they will be merged into one change. The default value is 1000 seconds.

Source

pub fn can_edit(&self) -> bool

Source

pub fn is_detached_editing_enabled(&self) -> bool

Source

pub fn config_text_style(&self, text_style: StyleConfigMap)

Source

pub fn config_default_text_style(&self, text_style: Option<StyleConfig>)

Source

pub fn from_snapshot(bytes: &[u8]) -> LoroResult<Self>

Source

pub fn can_reset_with_snapshot(&self) -> bool

Is the document empty? (no ops)

Source

pub fn is_detached(&self) -> bool

Whether OpLog and DocState are detached.

If so, the document is in readonly mode by default and importing will not change the state of the document. It also doesn’t change the version of the DocState. The changes will be recorded into OpLog only. You need to call checkout to make it take effect.

Source

pub fn peer_id(&self) -> PeerID

Source

pub fn detach(&self)

Source

pub fn attach(&self)

Source

pub fn state_timestamp(&self) -> Timestamp

Get the timestamp of the current state. It’s the last edit time of the DocState.

Source

pub fn app_state(&self) -> &Arc<LoroMutex<DocState>>

Source

pub fn get_state_deep_value(&self) -> LoroValue

Source

pub fn oplog(&self) -> &Arc<LoroMutex<OpLog>>

Source

pub fn export_from(&self, vv: &VersionVector) -> Vec<u8>

Source

pub fn import(&self, bytes: &[u8]) -> Result<ImportStatus, LoroError>

Source

pub fn import_with( &self, bytes: &[u8], origin: InternalString, ) -> Result<ImportStatus, LoroError>

Source

pub fn export_snapshot(&self) -> Result<Vec<u8>, LoroEncodeError>

Source

pub fn import_json_updates<T: TryInto<JsonSchema>>( &self, json: T, ) -> LoroResult<ImportStatus>

Import the json schema updates.

only supports backward compatibility but not forward compatibility.

Source

pub fn export_json_updates( &self, start_vv: &VersionVector, end_vv: &VersionVector, with_peer_compression: bool, ) -> JsonSchema

Source

pub fn export_json_in_id_span(&self, id_span: IdSpan) -> Vec<JsonChange>

Source

pub fn oplog_vv(&self) -> VersionVector

Get the version vector of the current OpLog

Source

pub fn state_vv(&self) -> VersionVector

Get the version vector of the current DocState

Source

pub fn get_by_path(&self, path: &[Index]) -> Option<ValueOrHandler>

Source

pub fn get_by_str_path(&self, path: &str) -> Option<ValueOrHandler>

Get the handler by the string path.

Source

pub fn get_uncommitted_ops_as_json(&self) -> Option<JsonSchema>

Source

pub fn get_handler(&self, id: ContainerID) -> Option<Handler>

Source

pub fn get_text<I: IntoContainerId>(&self, id: I) -> TextHandler

id can be a str, ContainerID, or ContainerIdRaw. if it’s str it will use Root container, which will not be None

Source

pub fn get_list<I: IntoContainerId>(&self, id: I) -> ListHandler

id can be a str, ContainerID, or ContainerIdRaw. if it’s str it will use Root container, which will not be None

Source

pub fn get_movable_list<I: IntoContainerId>(&self, id: I) -> MovableListHandler

id can be a str, ContainerID, or ContainerIdRaw. if it’s str it will use Root container, which will not be None

Source

pub fn get_map<I: IntoContainerId>(&self, id: I) -> MapHandler

id can be a str, ContainerID, or ContainerIdRaw. if it’s str it will use Root container, which will not be None

Source

pub fn get_tree<I: IntoContainerId>(&self, id: I) -> TreeHandler

id can be a str, ContainerID, or ContainerIdRaw. if it’s str it will use Root container, which will not be None

Source

pub fn has_container(&self, id: &ContainerID) -> bool

Source

pub fn undo_internal( &self, id_span: IdSpan, container_remap: &mut FxHashMap<ContainerID, ContainerID>, post_transform_base: Option<&DiffBatch>, before_diff: &mut dyn FnMut(&DiffBatch), ) -> LoroResult<CommitWhenDrop<'_>>

Undo the operations between the given id_span. It can be used even in a collaborative environment.

This is an internal API. You should NOT use it directly.

§Internal

This method will use the diff calculator to calculate the diff required to time travel from the end of id_span to the beginning of the id_span. Then it will convert the diff to operations and apply them to the OpLog with a dep on the last id of the given id_span.

This implementation is kinda slow, but it’s simple and maintainable. We can optimize it further when it’s needed. The time complexity is O(n + m), n is the ops in the id_span, m is the distance from id_span to the current latest version.

Source

pub fn revert_to(&self, target: &Frontiers) -> LoroResult<()>

Generate a series of local operations that can revert the current doc to the target version.

Internally, it will calculate the diff between the current state and the target state, and apply the diff to the current state.

Source

pub fn diff(&self, a: &Frontiers, b: &Frontiers) -> LoroResult<DiffBatch>

Calculate the diff between two versions so that apply diff on a will make the state same as b.

NOTE: This method will make the doc enter the detached mode.

Source

pub fn apply_diff(&self, diff: DiffBatch) -> LoroResult<()>

Apply a diff to the current state.

Source

pub fn diagnose_size(&self)

This is for debugging purpose. It will travel the whole oplog

Source

pub fn oplog_frontiers(&self) -> Frontiers

Source

pub fn state_frontiers(&self) -> Frontiers

Source

pub fn cmp_with_frontiers(&self, other: &Frontiers) -> Ordering

  • Ordering::Less means self is less than target or parallel
  • Ordering::Equal means versions equal
  • Ordering::Greater means self’s version is greater than target
Source

pub fn cmp_frontiers( &self, a: &Frontiers, b: &Frontiers, ) -> Result<Option<Ordering>, FrontiersNotIncluded>

Compare two Frontiers causally.

If one of the Frontiers are not included, it will return FrontiersNotIncluded.

Source

pub fn subscribe_root(&self, callback: Subscriber) -> Subscription

Source

pub fn subscribe( &self, container_id: &ContainerID, callback: Subscriber, ) -> Subscription

Source

pub fn subscribe_local_update( &self, callback: LocalUpdateCallback, ) -> Subscription

Source

pub fn import_batch(&self, bytes: &[Vec<u8>]) -> LoroResult<ImportStatus>

Source

pub fn get_value(&self) -> LoroValue

Get shallow value of the document.

Source

pub fn get_deep_value(&self) -> LoroValue

Get deep value of the document.

Source

pub fn get_deep_value_with_id(&self) -> LoroValue

Get deep value of the document with container id

Source

pub fn checkout_to_latest(&self)

Source

pub fn checkout(&self, frontiers: &Frontiers) -> LoroResult<()>

Checkout DocState to a specific version.

This will make the current DocState detached from the latest version of OpLog. Any further import will not be reflected on the DocState, until user call LoroDoc::attach()

Source

pub fn vv_to_frontiers(&self, vv: &VersionVector) -> Frontiers

Source

pub fn frontiers_to_vv(&self, frontiers: &Frontiers) -> Option<VersionVector>

Source

pub fn merge(&self, other: &Self) -> LoroResult<ImportStatus>

Import ops from other doc.

After a.merge(b) and b.merge(a), a and b will have the same content if they are in attached mode.

Source

pub fn len_ops(&self) -> usize

Source

pub fn len_changes(&self) -> usize

Source

pub fn config(&self) -> &Configure

Source

pub fn check_state_diff_calc_consistency_slow(&self)

This method compare the consistency between the current doc state and the state calculated by diff calculator from beginning.

Panic when it’s not consistent

Source

pub fn log_estimated_size(&self)

Source

pub fn query_pos( &self, pos: &Cursor, ) -> Result<PosQueryResult, CannotFindRelativePosition>

Source

pub fn free_history_cache(&self)

Free the history cache that is used for making checkout faster.

If you use checkout that switching to an old/concurrent version, the history cache will be built. You can free it by calling this method.

Source

pub fn free_diff_calculator(&self)

Free the cached diff calculator that is used for checkout.

Source

pub fn has_history_cache(&self) -> bool

If you use checkout that switching to an old/concurrent version, the history cache will be built. You can free it by calling free_history_cache.

Source

pub fn compact_change_store(&self)

Encoded all ops and history cache to bytes and store them in the kv store.

The parsed ops will be dropped

Source

pub fn analyze(&self) -> DocAnalysis

Analyze the container info of the doc

This is used for development and debugging

Source

pub fn get_path_to_container( &self, id: &ContainerID, ) -> Option<Vec<(ContainerID, Index)>>

Get the path from the root to the container

Source

pub fn export(&self, mode: ExportMode<'_>) -> Result<Vec<u8>, LoroEncodeError>

Source

pub fn shallow_since_vv(&self) -> ImVersionVector

The doc only contains the history since the shallow history start version vector.

This is empty if the doc is not shallow.

The ops included by the shallow history start version vector are not in the doc.

Source

pub fn shallow_since_frontiers(&self) -> Frontiers

Source

pub fn is_shallow(&self) -> bool

Check if the doc contains the full history.

Source

pub fn get_pending_txn_len(&self) -> usize

Get the number of operations in the pending transaction.

The pending transaction is the one that is not committed yet. It will be committed after calling doc.commit(), doc.export(mode) or doc.checkout(version).

Source

pub fn find_id_spans_between( &self, from: &Frontiers, to: &Frontiers, ) -> VersionVectorDiff

Source

pub fn subscribe_first_commit_from_peer( &self, callback: FirstCommitFromPeerCallback, ) -> Subscription

Subscribe to the first commit from a peer. Operations performed on the LoroDoc within this callback will be merged into the current commit.

This is useful for managing the relationship between PeerID and user information. For example, you could store user names in a LoroMap using PeerID as the key and the UserID as the value.

Source

pub fn subscribe_pre_commit(&self, callback: PreCommitCallback) -> Subscription

Subscribe to the pre-commit event.

The callback will be called when the changes are committed but not yet applied to the OpLog. You can modify the commit message and timestamp in the callback by [ChangeModifier].

Source§

impl LoroDoc

Source§

impl LoroDoc

Source

pub fn subscribe_peer_id_change( &self, callback: PeerIdUpdateCallback, ) -> Subscription

Subscribe to the changes of the peer id.

Source§

impl LoroDoc

Source

pub fn txn(&self) -> Result<Transaction, LoroError>

Create a new transaction. Every ops created inside one transaction will be packed into a single Change.

There can only be one active transaction at a time for a LoroDoc.

Source

pub fn txn_with_origin(&self, origin: &str) -> Result<Transaction, LoroError>

Create a new transaction with specified origin.

The origin will be propagated to the events. There can only be one active transaction at a time for a LoroDoc.

Source

pub fn start_auto_commit(&self)

Source

pub fn renew_txn_if_auto_commit(&self, options: Option<CommitOptions>)

Trait Implementations§

Source§

impl Clone for LoroDoc

Source§

fn clone(&self) -> LoroDoc

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 LoroDoc

Source§

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

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

impl Default for LoroDoc

Source§

fn default() -> Self

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

impl Deref for LoroDoc

Source§

type Target = LoroDocInner

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Drop for LoroDoc

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> 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> Paint for T
where T: ?Sized,

Source§

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 primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

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>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

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 bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

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 mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
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.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

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

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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> ZeroElement for T
where T: Default,