#[non_exhaustive]pub enum ToolError {
ExecutionFailed(String),
NotFound(String),
InvalidArgs(String),
Cancelled,
Declined(String),
Timeout(Duration),
Other(String),
}Expand description
Errors that can occur during tool execution.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
ExecutionFailed(String)
The tool’s execution logic failed.
NotFound(String)
No tool with this name is registered.
InvalidArgs(String)
The arguments provided to the tool were invalid.
Cancelled
The tool call was cancelled before completion.
Declined(String)
A confirmation-gated call was declined; carries the reason given, so the model can tell the user why and what to do instead.
Timeout(Duration)
The tool call exceeded its timeout.
Other(String)
A catch-all for other tool errors.
Implementations§
Source§impl ToolError
impl ToolError
Sourcepub fn from_error(error: impl Into<Box<dyn Error + Send + Sync>>) -> Self
pub fn from_error(error: impl Into<Box<dyn Error + Send + Sync>>) -> Self
Turn any error into a ToolError, the way ? would if it could.
A ToolError passes through unchanged, so a tool that returns
ToolError::InvalidArgs keeps that meaning. Anything else — an
io::Error, a reqwest::Error, a String, an anyhow::Error —
becomes ToolError::ExecutionFailed carrying its message, which is
what the model is shown.
use gemini_adk_rs::error::ToolError;
let io = std::io::Error::other("disk full");
assert!(matches!(ToolError::from_error(io), ToolError::ExecutionFailed(m) if m == "disk full"));
assert!(matches!(ToolError::from_error(ToolError::Cancelled), ToolError::Cancelled));
assert!(matches!(ToolError::from_error("no such city"), ToolError::ExecutionFailed(_)));Trait Implementations§
Source§impl Error for ToolError
impl Error for ToolError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ToolError
impl RefUnwindSafe for ToolError
impl Send for ToolError
impl Sync for ToolError
impl Unpin for ToolError
impl UnwindSafe for ToolError
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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 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>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].