pub struct ModelDef {Show 17 fields
pub name: String,
pub provider: String,
pub context_window: u64,
pub runtime_context_window: Option<u64>,
pub stream_timeout: Option<f64>,
pub capabilities: Vec<String>,
pub pricing: Option<ModelPricing>,
pub deprecated: bool,
pub deprecation_note: Option<String>,
pub superseded_by: Option<String>,
pub fast_mode: Option<FastModeDef>,
pub quality_tags: Vec<String>,
pub availability: ModelAvailability,
pub tier: Option<String>,
pub open_weight: Option<bool>,
pub strengths: Vec<String>,
pub benchmarks: BTreeMap<String, f64>,
}Fields§
§name: String§provider: String§context_window: u64§runtime_context_window: Option<u64>§stream_timeout: Option<f64>§capabilities: Vec<String>§pricing: Option<ModelPricing>§deprecated: bool§deprecation_note: Option<String>§superseded_by: Option<String>Structured replacement pointer: the catalog id of the model that
supersedes this one (e.g. an older Opus row points at the newest
Opus). Lets release tooling express “migrate to X” in a
machine-readable way instead of burying it in deprecation_note
free text. A model may be superseded without being deprecated
(a newer option exists but this one is still fully supported);
pair it with deprecated = true once a sunset is announced.
fast_mode: Option<FastModeDef>Accelerated-serving (“fast mode”) tier metadata, when the model’s
provider offers one. Off by default — see FastModeDef. None for
models with no faster serving path.
availability: ModelAvailabilityWhether the model can be reached over a normal API-key serverless call,
or only via a dedicated/provisioned endpoint that the caller must spin
up out-of-band. Providers like Together list dedicated-only routes
alongside serverless ones in /v1/models, so this metadata lets clients
avoid presenting them as one-click options.
tier: Option<String>Popular-consensus tier label. Enum-typed string: “small” | “mid” |
“frontier” | “reasoning”. Self-declared per model (no pattern-matched
rule table) so the catalog is the single source of truth. When None
the resolver returns the catalog default (“mid”). Use the richer
strengths + benchmarks fields to pick models for specific
workloads — tier exists only as a coarse popular-consensus shortcut.
open_weight: Option<bool>True when the model weights are downloadable / self-hostable (open-weight / open-source license, regardless of commercial-use restrictions). False when weights are closed (Anthropic, OpenAI, Google, etc.). None when the catalog row predates the migration.
strengths: Vec<String>Workload-shaped strength tags. Conventional values include
coding, summarization, long_context, tool_use, reasoning,
vision, speed, cheap, agentic. Selectors should treat
missing entries as “no claim” rather than “no strength.”
benchmarks: BTreeMap<String, f64>Public benchmark numbers, keyed by a snake_case identifier
(swe_bench_verified, humaneval, aa_intelligence_index, etc.).
Values are the raw published scores. The selector layer is free
to normalize per benchmark; the catalog records the canonical
score so future readers can audit the source.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ModelDef
impl<'de> Deserialize<'de> for ModelDef
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl StructuralPartialEq for ModelDef
Auto Trait Implementations§
impl Freeze for ModelDef
impl RefUnwindSafe for ModelDef
impl Send for ModelDef
impl Sync for ModelDef
impl Unpin for ModelDef
impl UnsafeUnpin for ModelDef
impl UnwindSafe for ModelDef
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);