pub enum ReasoningCapability {
Unsupported,
Binary,
Levels(Vec<ReasoningLevel>),
Budget {
min: usize,
max: usize,
},
}Expand description
Describes the reasoning controls a model exposes.
Adapters declare this via ModelCapabilities::supports_reasoning.
The user-facing ReasoningLevel is mapped onto whatever shape the
model actually accepts via nearest_effort().
Variants§
Unsupported
Model has no reasoning controls. Any ReasoningLevel is silently
ignored by the adapter.
Binary
Model has on/off reasoning only (most Ollama-hosted models like
deepseek-r1, qwen3, kimi-k2-thinking — think: true/false).
ReasoningLevel::None → off; anything else → on.
Levels(Vec<ReasoningLevel>)
Model exposes a discrete enum of supported levels (gpt-oss,
OpenAI o-series + GPT-5, Anthropic adaptive thinking, Groq,
Fireworks, vLLM-on-gpt-oss). nearest_effort() maps the
requested level onto this set.
Budget
Model expects a numeric token budget (legacy Anthropic
budget_tokens, legacy Gemini 2.5 thinking_budget). Adapters
translate ReasoningLevel onto a value in [min, max].
Trait Implementations§
Source§impl Clone for ReasoningCapability
impl Clone for ReasoningCapability
Source§fn clone(&self) -> ReasoningCapability
fn clone(&self) -> ReasoningCapability
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ReasoningCapability
impl Debug for ReasoningCapability
impl Eq for ReasoningCapability
Source§impl PartialEq for ReasoningCapability
impl PartialEq for ReasoningCapability
impl StructuralPartialEq for ReasoningCapability
Auto Trait Implementations§
impl Freeze for ReasoningCapability
impl RefUnwindSafe for ReasoningCapability
impl Send for ReasoningCapability
impl Sync for ReasoningCapability
impl Unpin for ReasoningCapability
impl UnsafeUnpin for ReasoningCapability
impl UnwindSafe for ReasoningCapability
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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 more