Skip to main content

ToolError

Struct ToolError 

Source
pub struct ToolError {
    pub message: String,
    /* private fields */
}
Expand description

An error returned from a tool execution. The error message is sent back to the model as the tool’s error response. Structured metadata can be attached for hooks and logging — it is not sent to the model.

Implements From<String> and From<&str> for ergonomic construction.

§Example

use llm_tool::ToolError;
use serde::Serialize;

let err: ToolError = "something went wrong".into();
assert_eq!(err.to_string(), "something went wrong");

let err = ToolError::new(format!("failed to read {}", "file.txt"));
assert!(err.to_string().contains("file.txt"));

// Structured metadata from a typed struct (preferred)
#[derive(Serialize)]
struct HttpErrorMeta { status_code: u16, url: String }

let err = ToolError::new("HTTP request failed")
    .with_metadata(&HttpErrorMeta { status_code: 503, url: "https://example.com".into() })
    .unwrap();
assert_eq!(err.metadata()["status_code"], 503);

// Single ad-hoc entry
let err = ToolError::new("timeout")
    .with_meta("retry_after_secs", serde_json::json!(30));
assert_eq!(err.metadata()["retry_after_secs"], 30);

Fields§

§message: String

Human-readable error message sent to the model.

Implementations§

Source§

impl ToolError

Source

pub fn new(message: impl Into<String>) -> Self

Create a new tool error with no metadata.

Source

pub fn with_meta(self, key: impl Into<String>, value: Value) -> Self

Attach a single metadata key-value pair. Chainable.

For attaching multiple fields at once, prefer with_metadata with a typed struct.

Source

pub fn with_metadata<T: Serialize>(self, value: &T) -> Result<Self, Self>

Attach structured metadata from a serializable value.

The value is serialized to a JSON object and its fields are merged into the metadata map. See ToolOutput::with_metadata for details.

§Errors

Returns Err(self) if value doesn’t serialize to a JSON object.

Source

pub fn metadata(&self) -> &HashMap<String, Value>

The structured metadata map.

Trait Implementations§

Source§

impl Clone for ToolError

Source§

fn clone(&self) -> ToolError

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ToolError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ToolError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ToolError

1.30.0 · Source§

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

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<&str> for ToolError

Source§

fn from(message: &str) -> Self

Converts to this type from the input type.
Source§

impl From<Box<dyn Error + Send + Sync>> for ToolError

Source§

fn from(e: Box<dyn Error + Send + Sync>) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ToolError

Source§

fn from(e: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ToolError

Source§

fn from(e: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Infallible> for ToolError

Source§

fn from(never: Infallible) -> Self

Converts to this type from the input type.
Source§

impl From<String> for ToolError

Source§

fn from(message: String) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for ToolError

Source§

fn eq(&self, other: &ToolError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ToolError

Source§

impl StructuralPartialEq for ToolError

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more