Skip to main content

FtsIndex

Struct FtsIndex 

Source
pub struct FtsIndex<B>
where B: FtsBackend,
{ /* private fields */ }
Expand description

Full-text search index generic over storage backend.

Indexing, search, and highlighting use the FtsBackend storage contract.

Writes accumulate in an in-memory Memtable, one state per index. Threshold-triggered flushing writes each index’s postings to an immutable segment of that index through the backend. Queries merge the active memtable with stored segments. The backend determines segment durability.

MemoryGovernor enforces per-engine memory budgets on large allocations (compaction, segment merge, query term collection).

Implementations§

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn highlight( &self, text: &str, query: &str, prefix: &str, suffix: &str, ) -> String

Generate highlighted text with matched query terms wrapped in tags.

Returns the original text with each occurrence of a matched query term surrounded by prefix and suffix (e.g., <b> and </b>).

Source

pub fn offsets(&self, text: &str, query: &str) -> Vec<MatchOffset>

Return byte offsets of matched query terms in the original text.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn set_collection_analyzer( &self, database_id: u64, tid: u64, collection: &str, analyzer_name: &str, ) -> Result<(), <B as FtsBackend>::Error>

Set the analyzer for a collection. Persists to backend metadata.

Source

pub fn set_collection_language( &self, database_id: u64, tid: u64, collection: &str, lang_code: &str, ) -> Result<(), <B as FtsBackend>::Error>

Set the language for a collection. Persists to backend metadata.

Source

pub fn set_collection_fuzzy( &self, database_id: u64, tid: u64, collection: &str, fuzzy: bool, ) -> Result<(), <B as FtsBackend>::Error>

Set whether searches over this collection fall back to fuzzy (Levenshtein) matching by default. Persists to backend metadata.

Source

pub fn get_collection_fuzzy( &self, database_id: u64, tid: u64, collection: &str, ) -> Result<bool, <B as FtsBackend>::Error>

Whether this collection defaults to fuzzy matching. false when unset.

Source

pub fn get_collection_analyzer( &self, database_id: u64, tid: u64, collection: &str, ) -> Result<Option<String>, <B as FtsBackend>::Error>

Get the configured analyzer name for a collection.

Source

pub fn get_collection_language( &self, database_id: u64, tid: u64, collection: &str, ) -> Result<Option<String>, <B as FtsBackend>::Error>

Get the configured language for a collection.

Source

pub fn analyze_for_collection( &self, database_id: u64, tid: u64, collection: &str, text: &str, ) -> Result<Vec<String>, <B as FtsBackend>::Error>

Analyze text using the collection’s configured analyzer.

Falls back to the standard English analyzer if no analyzer is configured.

Source

pub fn tokenize_raw_for_collection( &self, database_id: u64, tid: u64, collection: &str, text: &str, ) -> Result<Vec<String>, <B as FtsBackend>::Error>

Tokenize text WITHOUT stemming for fuzzy matching.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn read_fieldnorm<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, doc_id: Surrogate, ) -> Result<Option<u32>, <B as FtsBackend>::Error>

Get the fieldnorm (SmallFloat-encoded doc length) for a doc.

Returns the decoded approximate u32 length, or None if not stored.

Source

pub fn write_fieldnorm<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, doc_id: Surrogate, doc_length: u32, ) -> Result<(), <B as FtsBackend>::Error>

Write a fieldnorm byte for a surrogate. Grows the array if needed.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn index_stats<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, ) -> Result<(u32, f32), <B as FtsBackend>::Error>

Get total document count and average document length of one index.

Returns (total_docs, avg_doc_len). If the index is empty, returns (0, 1.0) to avoid division by zero.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn put_synonym_group( &self, database_id: u64, tid: u64, record: &SynonymGroupRecord, ) -> Result<(), <B as FtsBackend>::Error>

Persist a synonym group. Overwrites any existing group with the same name.

Source

pub fn delete_synonym_group( &self, database_id: u64, tid: u64, name: &str, ) -> Result<bool, <B as FtsBackend>::Error>

Delete a synonym group. Returns true if it existed.

Source

pub fn get_synonym_group( &self, database_id: u64, tid: u64, name: &str, ) -> Result<Option<SynonymGroupRecord>, <B as FtsBackend>::Error>

Read a single synonym group by name. Returns None if not found or tombstoned.

Source

pub fn list_synonym_groups( &self, database_id: u64, tid: u64, ) -> Result<Vec<SynonymGroupRecord>, <B as FtsBackend>::Error>

List all synonym group records for a tenant.

Source

pub fn build_synonym_map_for_tenant( &self, _database_id: u64, _tid: u64, all_groups: &[SynonymGroupRecord], ) -> SynonymMap

Build an in-memory SynonymMap from a slice of synonym group records.

Each term in every group maps to all other terms in that group (bidirectional OR-expansion). Terms are analyzed with the default analyzer so synonym keys match the stemmed tokens produced at query time by search_with_params.

Source

pub fn expand_query_with_synonyms( &self, database_id: u64, tid: u64, tokens: Vec<String>, ) -> Result<Vec<String>, <B as FtsBackend>::Error>

Load all synonym groups for a tenant and build the expansion map.

Called at FTS query time inside search_with_params to expand query tokens before BM25 scoring.

Source

pub fn expand_query_groups( &self, database_id: u64, tid: u64, tokens: Vec<String>, ) -> Result<Vec<Vec<String>>, <B as FtsBackend>::Error>

Expand each analyzed query token into its word group: the token first, then its distinct synonyms. One group per token, in token order. A document matches a word when it holds any term of the group.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn index_document<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, doc_id: Surrogate, text: &str, ) -> Result<(), FtsIndexError<<B as FtsBackend>::Error>>

Index a document’s text content into one index. The analyzer is the one bound to the index’s collection.

Returns Err(FtsIndexError::SurrogateOutOfRange) for Surrogate::ZERO or values exceeding MAX_INDEXABLE_SURROGATE. Surrogate::ZERO is the unassigned sentinel. Fieldnorm arrays use raw u32 surrogates as indexes. Values near u32::MAX cause multi-GiB allocations. Runtime bounds checks run before analysis and remain active in release builds.

Source

pub fn index_analyzed_document<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, doc_id: Surrogate, tokens: &[String], ) -> Result<(), FtsIndexError<<B as FtsBackend>::Error>>

Index ordered tokens from this collection’s current analyzer. Callers preserve token order and hold analyzer config stable through indexing.

Returns Err(FtsIndexError::SurrogateOutOfRange) for Surrogate::ZERO or values exceeding MAX_INDEXABLE_SURROGATE.

Source

pub fn remove_document<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, doc_id: Surrogate, ) -> Result<(), FtsIndexError<<B as FtsBackend>::Error>>

Remove a document from one index.

The memtable drops the document’s postings. Postings already flushed to a segment stay in that immutable segment, so the document enters the delete set of every segment the index holds: reads skip those postings and a merge drops them. The corpus stats lose the document’s length. A document the index does not hold changes nothing.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn flush_memtable<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, ) -> Result<(), FtsIndexError<<B as FtsBackend>::Error>>

Flush one index’s memtable postings to an immutable segment of that index in the backend. Every other index keeps its memtable state.

The postings leave the memtable only after the segment is written, so a failed flush loses nothing.

Calling this before serializing the index guarantees that all posting data written since the last spill threshold is captured in the backend’s segment storage rather than the in-memory memtable. Callers that checkpoint the index (e.g., NodeDB-Lite flush) must call this once per active index before persisting.

Source

pub fn flush_all_memtables( &self, ) -> Result<(), FtsIndexError<<B as FtsBackend>::Error>>

Flush every index the memtable holds, each to its own segment.

Source

pub fn purge_collection( &self, database_id: u64, tid: u64, collection: &str, ) -> Result<usize, <B as FtsBackend>::Error>

Purge every index of a collection. Returns count of removed entries.

Source

pub fn purge_tenant( &self, database_id: u64, tid: u64, ) -> Result<usize, <B as FtsBackend>::Error>

Purge all entries for a (database_id, tenant) across every collection.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn new(backend: B, governor: Arc<MemoryGovernor>) -> FtsIndex<B>

Create a new FTS index with the given backend, default BM25 params, and a memory governor.

Source

pub fn with_params( backend: B, params: Bm25Params, governor: Arc<MemoryGovernor>, ) -> FtsIndex<B>

Create a new FTS index with custom BM25 parameters and a memory governor.

Source

pub fn with_memtable_config( backend: B, memtable: MemtableConfig, governor: Arc<MemoryGovernor>, ) -> FtsIndex<B>

Create a new FTS index whose memtable spills at memtable thresholds. Unreachable thresholds keep every posting in the memtable.

Source

pub fn with_config( backend: B, params: Bm25Params, memtable: MemtableConfig, governor: Arc<MemoryGovernor>, ) -> FtsIndex<B>

Create a new FTS index with custom BM25 parameters whose memtable spills at memtable thresholds.

Source

pub fn backend(&self) -> &B

Access the underlying backend.

Source

pub fn backend_mut(&mut self) -> &mut B

Mutable access to the underlying backend.

Source

pub fn memtable(&self) -> &Memtable

Access the active memtable (for LSM query merging).

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn search<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, params: FtsSearchParams<'_>, ) -> Result<Vec<TextSearchResult>, FtsIndexError<<B as FtsBackend>::Error>>

Search one index with explicit boolean mode, fuzzy, and optional prefilter.

Analyzer, fuzzy default, and synonyms come from the index’s collection. Postings and BM25 stats come from the index itself.

Supports NOT <term> and -<term> negation in the query string. Returns Err(FtsIndexError::InvalidQuery) for ill-formed queries such as NOT-only queries or unsupported parenthesised groups.

Source

pub fn search_staged<'a>( &self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, params: FtsSearchParams<'_>, staged: Option<&StagedView>, ) -> Result<Vec<TextSearchResult>, FtsIndexError<<B as FtsBackend>::Error>>

Self::search inside an open transaction: indexed documents the transaction hides do not match, and its staged documents compete in the same ranking under the same query semantics. prefilter bounds staged documents too.

Results are ordered by score descending, then surrogate ascending.

Source§

impl<B> FtsIndex<B>
where B: FtsBackend,

Source

pub fn doc_scorer<'a>( &'a self, database_id: u64, tid: u64, index: impl Into<IndexScope<'a>>, query: TextQuery<'_>, eligible: Option<&SurrogateBitmap>, staged: Option<StagedView>, ) -> Result<DocScorer<'a, B>, FtsIndexError<<B as FtsBackend>::Error>>

A scorer of query against index. eligible is the set of rows the reading query admits: the AND-mode fallback is decided over it, the same way a search with that prefilter decides it. staged is the open transaction’s view of the index.

Auto Trait Implementations§

§

impl<B> !Freeze for FtsIndex<B>

§

impl<B> !RefUnwindSafe for FtsIndex<B>

§

impl<B> !Sync for FtsIndex<B>

§

impl<B> Send for FtsIndex<B>
where B: Send,

§

impl<B> Unpin for FtsIndex<B>
where B: Unpin,

§

impl<B> UnsafeUnpin for FtsIndex<B>
where B: UnsafeUnpin,

§

impl<B> UnwindSafe for FtsIndex<B>
where B: 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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

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> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
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<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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