pub enum ToolErrorKind {
NotFound,
ToolUnavailable,
Timeout,
Network,
PermissionDenied,
InvalidInput,
RateLimited,
LoopDetected,
Internal,
External {
source: &'static str,
},
}Expand description
工具执行错误的分类。
Copy 约束保留——所有变体均为 Copy 类型。
Variants§
NotFound
工具未找到(静态目录中从未存在)
工具不可用(动态目录中曾存在但当前刷新后消失)
Timeout
工具执行超时
Network
网络相关错误
PermissionDenied
权限不足
InvalidInput
输入参数无效
RateLimited
被限流
LoopDetected
检测到循环调用
Internal
内部错误(兜底)
External
外部业务错误(由用户代码抛出,自动桥接)
source 为原始错误类型的 type_name,用于可观测性。
Implementations§
Source§impl ToolErrorKind
impl ToolErrorKind
Sourcepub fn is_retryable(self) -> bool
pub fn is_retryable(self) -> bool
判断该错误是否属于基础设施层面的瞬态故障(Transient Failure)。
可重试(原地静默重试):
Timeout/Network/RateLimited— 网络抖动、服务端过载ToolUnavailable— 动态目录瞬态不可用(MCP 重启等)
不可重试(立即弹回 LLM 修复层):
InvalidInput— 参数错了就是错了NotFound— 工具不存在,重试也没用PermissionDenied— 权限不会自动恢复External— 用户业务错误,框架不应猜测LoopDetected— 循环检测,重试无意义Internal— 内部错误,重试无意义
Trait Implementations§
Source§impl Clone for ToolErrorKind
impl Clone for ToolErrorKind
Source§fn clone(&self) -> ToolErrorKind
fn clone(&self) -> ToolErrorKind
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for ToolErrorKind
Source§impl Debug for ToolErrorKind
impl Debug for ToolErrorKind
Source§impl Display for ToolErrorKind
impl Display for ToolErrorKind
impl Eq for ToolErrorKind
Source§impl PartialEq for ToolErrorKind
impl PartialEq for ToolErrorKind
Source§fn eq(&self, other: &ToolErrorKind) -> bool
fn eq(&self, other: &ToolErrorKind) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for ToolErrorKind
Auto Trait Implementations§
impl Freeze for ToolErrorKind
impl RefUnwindSafe for ToolErrorKind
impl Send for ToolErrorKind
impl Sync for ToolErrorKind
impl Unpin for ToolErrorKind
impl UnsafeUnpin for ToolErrorKind
impl UnwindSafe for ToolErrorKind
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