pub struct ResourceBuilderWithHandler<F> { /* private fields */ }Expand description
Builder state after handler is specified.
This builder allows applying middleware layers via .layer() or building
the resource directly via .build().
Implementations§
Source§impl<F, Fut> ResourceBuilderWithHandler<F>
impl<F, Fut> ResourceBuilderWithHandler<F>
Sourcepub fn layer<L>(self, layer: L) -> ResourceBuilderWithLayer<F, L>
pub fn layer<L>(self, layer: L) -> ResourceBuilderWithLayer<F, L>
Apply a Tower layer (middleware) to this resource.
The layer wraps the resource’s handler service, enabling functionality like timeouts, rate limiting, and metrics collection at the per-resource level.
§Example
use std::time::Duration;
use tower::timeout::TimeoutLayer;
use tower_mcp::resource::ResourceBuilder;
use tower_mcp::protocol::{ReadResourceResult, ResourceContent};
let resource = ResourceBuilder::new("file:///slow.txt")
.name("Slow Resource")
.handler(|| async {
Ok(ReadResourceResult {
contents: vec![ResourceContent {
uri: "file:///slow.txt".to_string(),
mime_type: Some("text/plain".to_string()),
text: Some("content".to_string()),
blob: None,
}],
})
})
.layer(TimeoutLayer::new(Duration::from_secs(30)))
.build();Auto Trait Implementations§
impl<F> Freeze for ResourceBuilderWithHandler<F>where
F: Freeze,
impl<F> RefUnwindSafe for ResourceBuilderWithHandler<F>where
F: RefUnwindSafe,
impl<F> Send for ResourceBuilderWithHandler<F>where
F: Send,
impl<F> Sync for ResourceBuilderWithHandler<F>where
F: Sync,
impl<F> Unpin for ResourceBuilderWithHandler<F>where
F: Unpin,
impl<F> UnwindSafe for ResourceBuilderWithHandler<F>where
F: UnwindSafe,
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