pub enum ProviderFormatter {
OpenAIChat(OpenAIChatFormatter),
OpenAIResponses(OpenAIResponsesFormatter),
Anthropic(AnthropicFormatter),
Gemini(GeminiFormatter),
OpenAICompatible(OpenAICompatibleFormatter),
}Expand description
Static-dispatch formatter covering every provider family.
All formatter implementations are stateless zero-sized types, so heap-boxing
one behind Box<dyn ProviderToolFormatter> buys nothing: the Box still
allocates and every call pays a vtable lookup, while the wide pointer
itself is 16 bytes (data + vtable). This enum holds the same ZSTs inline —
one discriminant byte, no allocation — and its ProviderToolFormatter impl
matches on the variant, giving the compiler a static call target per family.
Prefer formatter (which returns this enum) in new code. The
Box<dyn ProviderToolFormatter> constructors below are kept for API
compatibility and delegate to this enum internally.
Variants§
OpenAIChat(OpenAIChatFormatter)
OpenAI Chat Completions API shape.
OpenAIResponses(OpenAIResponsesFormatter)
OpenAI Responses API shape.
Anthropic(AnthropicFormatter)
Anthropic Messages API shape.
Gemini(GeminiFormatter)
Google Gemini generateContent API shape.
OpenAICompatible(OpenAICompatibleFormatter)
Generic OpenAI-compatible Chat Completions shape.
Trait Implementations§
Source§impl Clone for ProviderFormatter
impl Clone for ProviderFormatter
impl Copy for ProviderFormatter
Source§impl Debug for ProviderFormatter
impl Debug for ProviderFormatter
impl Eq for ProviderFormatter
Source§impl Hash for ProviderFormatter
impl Hash for ProviderFormatter
Source§impl PartialEq for ProviderFormatter
impl PartialEq for ProviderFormatter
Source§impl ProviderToolFormatter for ProviderFormatter
impl ProviderToolFormatter for ProviderFormatter
Source§fn family(&self) -> ProviderFamily
fn family(&self) -> ProviderFamily
Source§fn supported_extensions(&self) -> &'static [&'static str]
fn supported_extensions(&self) -> &'static [&'static str]
defer_loading) is supported before
passing a tool through.Source§fn supports(&self, tool: &ToolDefinition) -> bool
fn supports(&self, tool: &ToolDefinition) -> bool
Source§fn format_tools(
&self,
tools: &[ToolDefinition],
model: &str,
) -> Result<Option<Value>, LLMError>
fn format_tools( &self, tools: &[ToolDefinition], model: &str, ) -> Result<Option<Value>, LLMError>
impl StructuralPartialEq for ProviderFormatter
Auto Trait Implementations§
impl Freeze for ProviderFormatter
impl RefUnwindSafe for ProviderFormatter
impl Send for ProviderFormatter
impl Sync for ProviderFormatter
impl Unpin for ProviderFormatter
impl UnsafeUnpin for ProviderFormatter
impl UnwindSafe for ProviderFormatter
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> 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