pub trait Metrics:
Send
+ Sync
+ 'static {
// Provided methods
fn on_request(&self, _method: &str) { ... }
fn on_response(&self, _method: &str) { ... }
fn on_error(&self, _method: &str, _error_kind: &str) { ... }
fn on_latency(&self, _method: &str, _duration: Duration) { ... }
fn on_queue_depth_change(&self, _active_queues: usize) { ... }
fn on_connection_pool_stats(&self, _stats: &ConnectionPoolStats) { ... }
}Expand description
Trait for receiving metrics callbacks from the handler.
All methods have default no-op implementations so that consumers can override only the callbacks they care about.
Provided Methods§
Sourcefn on_request(&self, _method: &str)
fn on_request(&self, _method: &str)
Called when a request is received, before processing.
Sourcefn on_response(&self, _method: &str)
fn on_response(&self, _method: &str)
Called when a response is successfully sent.
Sourcefn on_error(&self, _method: &str, _error_kind: &str)
fn on_error(&self, _method: &str, _error_kind: &str)
Called when a request results in an error.
error_kind is a bounded, low-cardinality discriminant (e.g.
ServerError::metric_label), never
the free-form error message. Implementations may use it as a metric
label/attribute; the caller guarantees it draws from a small fixed set,
so a client cannot inflate metric cardinality through it.
Sourcefn on_latency(&self, _method: &str, _duration: Duration)
fn on_latency(&self, _method: &str, _duration: Duration)
Called when a request completes (successfully or not) with the wall-clock duration from receipt to response.
This is the #1 production observability metric — use it to feed histograms, percentile trackers, or SLO dashboards.
Sourcefn on_queue_depth_change(&self, _active_queues: usize)
fn on_queue_depth_change(&self, _active_queues: usize)
Called when the number of active event queues changes.
Sourcefn on_connection_pool_stats(&self, _stats: &ConnectionPoolStats)
fn on_connection_pool_stats(&self, _stats: &ConnectionPoolStats)
Called with connection pool statistics when available.
Useful for monitoring connection pool health and detecting exhaustion.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<T> Metrics for Arc<T>
Blanket implementation: Arc<T> implements Metrics if T does.
impl<T> Metrics for Arc<T>
Blanket implementation: Arc<T> implements Metrics if T does.
This eliminates the need for wrapper types like MetricsForward when
sharing a metrics instance across multiple handlers or tasks.