Skip to main content

Tools

Struct Tools 

Source
pub struct Tools { /* private fields */ }
Expand description

Tool registry for managing and calling tools by name.

§Example

use aither::llm::tool::Tools;

let mut tools = Tools::new();
// tools.register(Calculator);
let definitions = tools.definitions();
// let result = tools.call("calculator", r#"{"operation": "add", "a": 5, "b": 3}"#).await;

Implementations§

Source§

impl Tools

Source

pub const fn new() -> Self

Creates a new empty tools registry.

Source

pub fn get<T>(&self) -> Option<&T>
where T: Tool + 'static,

Retrieves a tool by type.

Returns None if the tool is not found.

Source

pub fn get_mut<T>(&mut self) -> Option<&mut T>
where T: Tool + 'static,

Retrieves a mutable reference to a tool by type.

Returns None if the tool is not found.

Source

pub fn definitions(&self) -> Vec<ToolDefinition>

Returns definitions of all registered tools.

Source

pub fn register<T: Tool + 'static>( &mut self, tool: T, ) -> Result<(), RegisterError>

Registers a new tool.

The tool must implement Tool and be 'static.

§Errors

Returns RegisterError::DuplicateName if a tool of that name is already registered, or RegisterError::EmptyDescription if the tool has no description — a model cannot use a tool it cannot read about, so this is rejected rather than silently passed on.

Source

pub fn register_dyn<F>( &mut self, definition: ToolDefinition, handler: F, ) -> Result<(), RegisterError>
where F: Fn(&str) -> Pin<Box<dyn Future<Output = Result<ToolResult>> + Send>> + Send + Sync + 'static,

Registers a dynamic tool with a pre-made definition and handler.

This is useful for type-erased tools (e.g., child terminal tools for subagents) where the concrete type isn’t known at compile time.

§Errors

Same conditions as Self::register.

Source

pub fn unregister(&mut self, name: &str)

Removes a tool from the registry.

Source

pub async fn call(&self, name: &str, args: &str) -> Result<ToolResult>

Calls a tool by name with JSON arguments.

§Errors

Returns an error if the tool is not found, arguments cannot be parsed, or tool execution fails.

Trait Implementations§

Source§

impl Debug for Tools

Source§

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

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

impl Default for Tools

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Tools

§

impl !UnwindSafe for Tools

§

impl Freeze for Tools

§

impl Send for Tools

§

impl Sync for Tools

§

impl Unpin for Tools

§

impl UnsafeUnpin for Tools

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.