Skip to main content

crates_docs/server/handler/
types.rs

1//! Tool execution result types
2
3use rust_mcp_sdk::schema::{CallToolError, CallToolResult, ResultFromServer};
4
5/// Tool execution result (supports different return type conversions)
6#[derive(Debug)]
7pub struct ToolExecutionResult {
8    /// Tool name
9    pub tool_name: String,
10    /// Execution duration
11    pub duration: std::time::Duration,
12    /// Whether successful
13    pub success: bool,
14    /// Original result (for converting to different types)
15    pub result: std::result::Result<CallToolResult, CallToolError>,
16}
17
18impl ToolExecutionResult {
19    /// Convert to `CallToolResult` (for `ServerHandler`)
20    pub fn into_call_tool_result(self) -> std::result::Result<CallToolResult, CallToolError> {
21        self.result
22    }
23
24    /// Convert to `ResultFromServer` (for `ServerHandlerCore`)
25    pub fn into_result_from_server(self) -> ResultFromServer {
26        self.result.unwrap_or_else(CallToolResult::from).into()
27    }
28}