Skip to main content

Classification

Struct Classification 

Source
pub struct Classification {
    pub point_type: ConvergencePointType,
    pub substrate: SubstrateType,
    pub horizon: Horizon,
    pub calm: CalmClassification,
    pub data_classification: DataClassification,
}
Expand description

Lattice position of a Process — six orthogonal axes.

Fields§

§point_type: ConvergencePointType§substrate: SubstrateType§horizon: Horizon§calm: CalmClassification§data_classification: DataClassification

Implementations§

Source§

impl Classification

Source

pub fn gate_compute() -> Self

The workspace-baseline classification — a ConvergencePointType::Gate point on the SubstrateType::Compute substrate with every other axis at its Default. The (Gate, Compute) pair names an unremarkable barrier point in the Compute plane: no domain-specific structural claim (no fan-out / fan-in / broadcast / observation semantics beyond the barrier gate) and no domain-specific substrate claim (no Financial / Network / Storage / Security / Identity / Observability / Regulatory plane bringing in its own compliance baselines). The three defaulted axes ride at the intentional workspace baseline the sibling closed-set primitives already own: Horizon at HorizonKind::Bounded (terminates naturally, no asymptotic metric axes required), CalmClassification::Monotone (no coordination required per CALM), and DataClassification::Internal (access-controlled but not externally regulated).

Pre-lift the six-line Classification { point_type: Gate, substrate: Compute, horizon: Default::default(), calm: Default::default(), data_classification: Default::default() } struct-literal recurred at TEN sites past the ★★ PRIME-DIRECTIVE ≥ 2 duplication threshold — one production consumer plus nine test-fixture callsites spread across four crates, each restating the SAME (Gate, Compute) baseline verbatim:

  • crate::ephemeral::default_ephemeral_class — the substitute [EphemeralSpec::into::<crate::crd::ProcessSpec>] fills into crate::crd::ProcessSpec::classification when the operator omits an explicit :classification slot on (defephemeral …). The one PRODUCTION consumer of the shape — a regression that drifted its point-type or substrate axis silently retargets every unadorned ephemeral to a different plane.
  • crate::crd’s + crate::lib’s + crate::lifetime_clock’s + tatara_reconciler::{claim,render}’s + tatara_pool_reconciler:: controller_pool’s empty_spec / empty_process_spec / ephemeral_process / permanent_process test-fixture helpers + inline ProcessSpec literals — nine test-fixture callsites restating the SAME six-line struct-literal at the same shape.

Post-lift every callsite reads Classification::gate_compute(); a future workspace-wide baseline shift (a new Horizon default, a promotion of Compute to a compound baseline that pre-fills a canonical CalmClassification, a per-baseline compliance overlay stamping through the classification, or a rename of either axis enum) lands at ONE substrate function here and every downstream consumer inherits the upgrade mechanically. The current pin ties the three defaulted axes to the sibling closed-set defaults (HorizonKind::Bounded, CalmClassification::Monotone, DataClassification::Internal) so a future change to any sibling default surfaces at this primitive’s tests rather than as silent drift across ten independent callsites.

Sibling to the _or_default / _or_placeholder primitive family on crate::prelude::Process on the (return-form × axis) axis — those primitives own the borrow-form projections off a live Process; this one owns the construction shape for a fresh crate::crd::ProcessSpec whose classification axis is unremarkable. A future peer Classification::observe_observability() or similar named variant lands as a sibling method here when a second unremarkable-baseline shape opens.

Theory anchor: THEORY.md §VI.1 (generation over composition — the six-line struct-literal shape recurred at TEN hand-authored sites past the ★★ PRIME-DIRECTIVE ≥ 2 duplication trigger and is lifted onto ONE workspace-wide owner here). THEORY.md §II.1 invariant 5 (composition preserves proofs — a regression that drifted the baseline axis choice at only one consumer, or that broke the sibling-default correspondence, surfaces at this primitive’s tests rather than as silent operator-visible skew between the ephemeral sugar substitute and the ten downstream test-fixtures whose assertions depend on the shape).

Source

pub fn has_point_type(&self, kind: ConvergencePointType) -> bool

Closed-set-driven presence probe — does this Classification carry the given ConvergencePointType discriminator on its Self::point_type slot? The ONE substrate primitive that owns the (Classification, ConvergencePointType) -> bool scalar-carrier walk shape.

§Third scalar-carrier peer on the presence-probe axis

Peer of crate::spec::SignalPolicy::has_sighup_strategy and crate::encapsulates::EncapsulatesSpec::has_mode — all three probe a scalar closed-set-discriminator field on an inner crate::crd::ProcessSpec struct via a one-line self.<field> == kind body. Together they compose the SCALAR-CARRIER stratum of the workspace-wide closed-set-driven presence-probe algebra (the workspace-wide algebra spans three underlying representation kinds — Option-slot, slice, scalar — see the crate::spec::SignalPolicy::has_sighup_strategy docstring for the full-shape rundown; this method is the third scalar-carrier instance).

§Semantics — VARIANT match, not POPULATED slot

has_point_type(kind) returns true iff self.point_type == kind. Distinct from BOTH prior scalar-carrier peers on the (parent-shape × child-shape) axis:

  • crate::spec::SignalPolicy::has_sighup_strategy lives on a non-Option, DEFAULTED parent (SignalPolicy: Default) with a defaulted scalar child (SighupStrategy: Default = Reconverge) — a default carrier reads true for the default variant only.
  • crate::encapsulates::EncapsulatesSpec::has_mode lives on an OPTION parent (spec.encapsulates: Option<EncapsulatesSpec>) with a defaulted scalar child (EncapsulationMode: Default = Manage) — a bare None parent reads false for every variant.
  • has_point_type lives on a REQUIRED, non-Option, NON-DEFAULT parent (Classification has no impl Default) with a NON-DEFAULT scalar child (ConvergencePointType has no impl Default) — every well-formed crate::crd::ProcessSpec carries a Classification whose point_type slot is deliberately chosen by the operator, so the probe returns true on exactly ONE variant per spec and false on the other seven, with no default-arm short-circuit shortcut.

This closes the (required-parent × required-scalar-child) corner of the workspace-wide closed-set-driven presence-probe algebra at its first substrate primitive.

§Compounding

A future closed-set-discriminator scalar field on Classification (a peer has_substrate, has_calm, has_data_classification — the four remaining classification-axis closed sets) lands as ONE peer inherent method with the same one-line self.<field> == kind body and routes through the same strip_and_classify_prefixed_kind::<K, _> shape in tatara-check. A future ConvergencePointType variant (a hypothetical Demux / Mux / Pipeline for finer topology carving) reaches every downstream through ONE ALL entry on the closed set with the probe body untouched.

Theory anchor: THEORY.md §II.1 invariant 5 — composition preserves proofs; the scalar-carrier presence-probe body lives at ONE substrate site so every downstream (point-type-<kind> require-tag family in tatara-check, closed-set audit dispatchers, future variant additions on ConvergencePointType) binds through the SAME shape rather than restating the classification.point_type == kind closure body at each callsite. THEORY.md §VI.1 — generation over composition; a future ConvergencePointType variant lands at ONE ALL entry + ONE as_str arm on the closed set and the probe picks it up mechanically without further per-consumer edits.

Source

pub fn has_substrate(&self, kind: SubstrateType) -> bool

Closed-set-driven presence probe — does this Classification carry the given SubstrateType discriminator on its Self::substrate slot? The ONE substrate primitive that owns the (Classification, SubstrateType) -> bool scalar-carrier walk shape.

§Fourth scalar-carrier peer on the presence-probe axis

Peer of crate::spec::SignalPolicy::has_sighup_strategy, crate::encapsulates::EncapsulatesSpec::has_mode, and Self::has_point_type — all four probe a scalar closed-set- discriminator field on an inner crate::crd::ProcessSpec struct via a one-line self.<field> == kind body. Together they compose the SCALAR-CARRIER stratum of the workspace-wide closed-set-driven presence-probe algebra (the workspace-wide algebra spans three underlying representation kinds — Option- slot, slice, scalar — see the crate::spec::SignalPolicy::has_sighup_strategy docstring for the full-shape rundown; this method is the fourth scalar- carrier instance).

§Semantics — VARIANT match, not POPULATED slot

has_substrate(kind) returns true iff self.substrate == kind. FIRST co-tenant on the (required-parent × required- scalar-child) corner of the algebra with Self::has_point_type — both probe REQUIRED, non-Option, NON-DEFAULT slots on the same Classification parent whose two required axes carry no Default impl, so exactly ONE of the eight SubstrateType variants and exactly ONE of the eight ConvergencePointType variants answer true per well-formed crate::crd::ProcessSpec, with no default-arm short-circuit shortcut. Distinct from the two prior scalar-carrier peers on the (parent-shape × child- shape) axis: has_sighup_strategy lives on a non-Option, DEFAULTED parent (crate::spec::SignalPolicy carries #[derive(Default)]) with a defaulted scalar child (crate::signal::SighupStrategy defaults to crate::signal::SighupStrategy::Reconverge); has_mode lives on an OPTION parent (spec.encapsulates: Option<EncapsulatesSpec>) with a defaulted scalar child (crate::encapsulates::EncapsulationMode defaults to crate::encapsulates::EncapsulationMode::Manage).

This POPULATES the (required-parent × required-scalar-child) corner of the workspace-wide closed-set-driven presence-probe algebra at its SECOND substrate primitive after Self::has_point_type opened the corner, pinning the corner as a proven-repeatable primitive shape rather than a single- example curiosity.

§Compounding

A future closed-set-discriminator scalar field on Classification (a peer has_calm on CalmClassification, has_data_classification on DataClassification — the two remaining defaulted-scalar-child classification-axis closed sets) lands as ONE peer inherent method with the same one-line self.<field> == kind body and routes through the same strip_and_classify_prefixed_kind::<K, _> shape in tatara-check. A future SubstrateType variant (a hypothetical Consensus for governance substrates, Physical for hardware substrates, Cache for ephemeral memoization substrates) reaches every downstream through ONE ALL entry on the closed set with the probe body untouched.

Theory anchor: THEORY.md §II.1 invariant 5 — composition preserves proofs; the scalar-carrier presence-probe body lives at ONE substrate site so every downstream (substrate-<kind> require-tag family in tatara-check, closed-set audit dispatchers, future variant additions on SubstrateType) binds through the SAME shape rather than restating the classification.substrate == kind closure body at each callsite. THEORY.md §VI.1 — generation over composition; a future SubstrateType variant lands at ONE ALL entry + ONE as_str arm on the closed set and the probe picks it up mechanically without further per-consumer edits.

Source

pub fn has_calm(&self, kind: CalmClassification) -> bool

Closed-set-driven presence probe — does this Classification carry the given CalmClassification discriminator on its Self::calm slot? The ONE substrate primitive that owns the (Classification, CalmClassification) -> bool scalar-carrier walk shape.

§Fifth scalar-carrier peer on the presence-probe axis

Peer of crate::spec::SignalPolicy::has_sighup_strategy, crate::encapsulates::EncapsulatesSpec::has_mode, Self::has_point_type, and Self::has_substrate — all five probe a scalar closed-set-discriminator field on an inner crate::crd::ProcessSpec struct via a one-line self.<field> == kind body. Together they compose the SCALAR-CARRIER stratum of the workspace-wide closed-set-driven presence-probe algebra (the workspace-wide algebra spans three underlying representation kinds — Option-slot, slice, scalar — see the crate::spec::SignalPolicy::has_sighup_strategy docstring for the full-shape rundown; this method is the fifth scalar-carrier instance).

§Semantics — VARIANT match, not POPULATED slot

has_calm(kind) returns true iff self.calm == kind. FIRST occupant on a FRESH corner of the (parent-shape × child-shape) axis: a REQUIRED, non-Option, NON-DEFAULT parent (Classification has no impl Default because its two required axes point_type/substrate carry no default) combined with a DEFAULTED scalar child (CalmClassification defaults to CalmClassification::Monotone via #[default]). Distinct from every prior scalar-carrier peer on the (parent-shape × child-shape) axis:

This OPENS the (required-parent × defaulted-scalar-child) corner of the workspace-wide closed-set-driven presence-probe algebra at its first substrate primitive — a corner distinct from all four prior scalar-carrier peers (which sit on the three prior corners: defaulted-parent × defaulted-child, Option-parent × defaulted-child, required-parent × required-child).

§Compounding

A future closed-set-discriminator scalar field on Classification whose child carries #[derive(Default)] (a peer has_data_classification on DataClassification, whose default is DataClassification::Internal via #[default] — the remaining classification-axis closed set on a defaulted-scalar-child slot) lands as ONE peer inherent method with the same one-line self.<field> == kind body and routes through the same strip_and_classify_prefixed_kind::<K, _> shape in tatara-check. A future CalmClassification variant (a hypothetical ConditionallyMonotone for ops that are monotone under a witness, like CRDT joins under a fixed schema) reaches every downstream through ONE ALL entry on the closed set with the probe body untouched.

Theory anchor: THEORY.md §II.1 invariant 5 — composition preserves proofs; the scalar-carrier presence-probe body lives at ONE substrate site so every downstream (calm-<kind> require-tag family in tatara-check, closed-set audit dispatchers, future variant additions on CalmClassification) binds through the SAME shape rather than restating the classification.calm == kind closure body at each callsite. THEORY.md §VI.1 — generation over composition; a future CalmClassification variant lands at ONE ALL entry + ONE as_str arm on the closed set and the probe picks it up mechanically without further per-consumer edits.

Source

pub fn has_data_classification(&self, kind: DataClassification) -> bool

Closed-set-driven presence probe — does this Classification carry the given DataClassification discriminator on its Self::data_classification slot? The ONE substrate primitive that owns the (Classification, DataClassification) -> bool scalar-carrier walk shape.

§Sixth scalar-carrier peer on the presence-probe axis

Peer of crate::spec::SignalPolicy::has_sighup_strategy, crate::encapsulates::EncapsulatesSpec::has_mode, Self::has_point_type, Self::has_substrate, and Self::has_calm — all six probe a scalar closed-set- discriminator field on an inner crate::crd::ProcessSpec struct via a one-line self.<field> == kind body. Together they compose the SCALAR-CARRIER stratum of the workspace-wide closed-set-driven presence-probe algebra (the workspace-wide algebra spans three underlying representation kinds — Option- slot, slice, scalar — see the crate::spec::SignalPolicy::has_sighup_strategy docstring for the full-shape rundown; this method is the sixth scalar- carrier instance).

§Semantics — VARIANT match, not POPULATED slot

has_data_classification(kind) returns true iff self.data_classification == kind. SECOND co-tenant on the (required-parent × defaulted-scalar-child) corner of the algebra alongside Self::has_calm — both probe REQUIRED, non-Option, NON-DEFAULT Classification parent slots with a DEFAULTED scalar child (DataClassification defaults to DataClassification::Internal via #[default], sibling to CalmClassification::Monotone’s #[default]), so exactly ONE of the six DataClassification variants answers true per spec AND the default-arm short-circuit is present (a Classification filled via ..Default::default() on the data_classification axis reads true on the default variant DataClassification::Internal and false on every other).

This POPULATES the (required-parent × defaulted-scalar-child) corner of the workspace-wide closed-set-driven presence-probe algebra at its SECOND substrate primitive after Self::has_calm opened the corner, pinning the corner as a proven-repeatable primitive shape rather than a single-example curiosity. The corner-property contract (“bare Classification reads true on the default variant”) now walks TWO independent defaulted-scalar-child slots on the SAME Classification parent — a regression that promoted a different DataClassification variant to #[default] (or wired the arm to a fixed variant answer) fails HERE at ONE narrow substrate site before drifting through every unadorned Process’s baseline data-classification answer.

§Compounding

This method exhausts the four scalar closed-set-discriminator axes on Classification (Self::has_point_type, Self::has_substrate, Self::has_calm, and Self::has_data_classification) — the six-axis classification lattice now publishes ALL FOUR of its scalar-carrier presence probes at ONE substrate site each. The remaining two axes (horizon — a nested struct threading HorizonKind through horizon.kind; the sixth axis is variant-dependent on the HorizonKind::Asymptotic arm) live on nested-struct-scalar slots rather than the direct-scalar corner the four current peers span. A future DataClassification variant (a hypothetical seventh variant beyond Public / Internal / Confidential / Pii / Phi / Pci — say a TradeSecret bucket for competitive-sensitive data, or an Anonymized bucket for pseudonymized-PII whose regulatory posture differs) reaches every downstream through ONE ALL entry on the closed set + ONE as_str arm + ONE sensitivity_rank arm + one arm per predicate with the probe body untouched.

Theory anchor: THEORY.md §II.1 invariant 5 — composition preserves proofs; the scalar-carrier presence-probe body lives at ONE substrate site so every downstream (data-classification-<kind> require-tag family in tatara-check, closed-set audit dispatchers, future variant additions on DataClassification) binds through the SAME shape rather than restating the classification.data_classification == kind closure body at each callsite. THEORY.md §VI.1 — generation over composition; a future DataClassification variant lands at ONE ALL entry + ONE as_str arm on the closed set and the probe picks it up mechanically without further per-consumer edits.

Trait Implementations§

Source§

impl Clone for Classification

Source§

fn clone(&self) -> Classification

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Classification

Source§

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

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

impl<'de> Deserialize<'de> for Classification

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 JsonSchema for Classification

Source§

fn schema_name() -> String

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn is_referenceable() -> bool

Whether JSON Schemas generated for this type should be re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for Classification

Source§

fn eq(&self, other: &Classification) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for Classification

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 Classification

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> AppData for T
where T: OptionalSend + OptionalSync + 'static + OptionalSerde,

Source§

impl<T> AppDataResponse for T
where T: OptionalSend + OptionalSync + 'static + OptionalSerde,

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

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> 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> OptionalSend for T
where T: Send + ?Sized,

Source§

impl<T> OptionalSync for T
where T: Sync + ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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