pub struct ProviderOptions(/* private fields */);Expand description
Typed options for several providers, one entry per provider key. Each wire reads only the entry named by its own provider. Equality and the serialized form are the entries’ sections. A deserialized entry has no typed options behind it, so its fields are sent as written: inserting the typed options again restores their refusal check.
An entry Self::set stores from options that do not serialize holds
the OptionsError instead of sections. It fails the encode of every
request that carries it, whichever provider the request goes to, and it
fails serializing this value, so the error is never dropped. Two failed
entries are equal when their errors read the same.
Implementations§
Source§impl ProviderOptions
impl ProviderOptions
Sourcepub fn insert<P: ProviderExtension>(
&mut self,
options: &P::Options,
) -> Result<&mut Self, OptionsError>
pub fn insert<P: ProviderExtension>( &mut self, options: &P::Options, ) -> Result<&mut Self, OptionsError>
Store options as P’s entry, replacing any entry it had. Options
that write no field leave P with no entry.
§Errors
When options does not serialize to an object of object sections.
Sourcepub fn set<O: ExtensionOptions>(self, options: O) -> Self
pub fn set<O: ExtensionOptions>(self, options: O) -> Self
self with options as the entry of their provider,
ExtensionOptions::Ext, replacing any entry it had. Options that
write no field leave that provider with no entry.
It cannot fail: options that do not serialize to an object of object
sections are stored as a failed entry, which fails the encode of a
request that carries it with the OptionsError as the source.
Self::with reports the same error at once.
The entry is always stored under O::Ext’s key, the built-in
provider the options type belongs to. A third-party provider whose
extension reuses a built-in options type (say OpenAiOptions for an
OpenAI-compatible gateway) must store them with
Self::with::<P> instead, or its wire never reads them.
use rig_core::completion::ProviderOptions;
use rig_core::providers::openrouter::extension::{OpenRouterExt, OpenRouterOptions};
let options = ProviderOptions::new().set(OpenRouterOptions::new().session_id("s-1"));
assert!(options.contains::<OpenRouterExt>());Sourcepub fn with<P: ProviderExtension>(
self,
options: &P::Options,
) -> Result<Self, OptionsError>
pub fn with<P: ProviderExtension>( self, options: &P::Options, ) -> Result<Self, OptionsError>
Sourcepub fn get<P: ProviderExtension>(&self) -> Option<&Map<String, Value>>
pub fn get<P: ProviderExtension>(&self) -> Option<&Map<String, Value>>
P’s sections as the wire receives them, when it has an entry.
None for a failed entry (Self::set).
Sourcepub fn remove<P: ProviderExtension>(&mut self)
pub fn remove<P: ProviderExtension>(&mut self)
Remove P’s entry.
Sourcepub fn contains<P: ProviderExtension>(&self) -> bool
pub fn contains<P: ProviderExtension>(&self) -> bool
Whether P has an entry.
Sourcepub fn overlay(self, over: &ProviderOptions) -> ProviderOptions
pub fn overlay(self, over: &ProviderOptions) -> ProviderOptions
self with each entry of over in place of its own for the same
provider. An agent’s options overlaid with a run’s give the run’s
entry for every provider the run names.
Trait Implementations§
Source§impl Clone for ProviderOptions
impl Clone for ProviderOptions
Source§impl Debug for ProviderOptions
impl Debug for ProviderOptions
Source§impl Default for ProviderOptions
impl Default for ProviderOptions
Source§impl<'de> Deserialize<'de> for ProviderOptions
impl<'de> Deserialize<'de> for ProviderOptions
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
Source§impl PartialEq for ProviderOptions
impl PartialEq for ProviderOptions
Auto Trait Implementations§
impl Freeze for ProviderOptions
impl RefUnwindSafe for ProviderOptions
impl Send for ProviderOptions
impl Sync for ProviderOptions
impl Unpin for ProviderOptions
impl UnsafeUnpin for ProviderOptions
impl UnwindSafe for ProviderOptions
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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