use super::types::McpError;
pub trait McpResultExt<T> {
fn context<C: Into<String>>(self, context: C) -> Result<T, McpError>;
fn with_context<C, F>(self, f: F) -> Result<T, McpError>
where
C: Into<String>,
F: FnOnce() -> C;
}
impl<T> McpResultExt<T> for Result<T, McpError> {
fn context<C: Into<String>>(self, context: C) -> Self {
self.map_err(|e| McpError::WithContext {
context: context.into(),
source: Box::new(e),
})
}
fn with_context<C, F>(self, f: F) -> Self
where
C: Into<String>,
F: FnOnce() -> C,
{
self.map_err(|e| McpError::WithContext {
context: f().into(),
source: Box::new(e),
})
}
}