Skip to main content

Extension

Trait Extension 

pub trait Extension:
    Any
    + Send
    + Sync
    + Debug
    + 'static { }
Expand description

Extension is type which can be stored inside an Extensions store

This is has to be manually implement or can be implemented using #[derive(Extension)]

We have not implemented this for any container types:

  • Arc<T>: sounds nice, but by not implement it, it has become impossible to misuse Extensions::insert() with Extensions::insert_arc(). Otherwise this is very tricky and error prone
  • Vec<T>: Collections should use the new type pattern to give it a meaningfull name, and to prevent collisions

There might be valid use cases for implementing it for other type of containers, so in case you run into these open a Github issue and we can see if implementing it makes sense

§Extension Tags

Extensions can be tagged with one or more categories using the #[extension(tags(tag1, tag2))] attribute on the derive macro. This generates implementations for the corresponding marker traits below, which groups them in rust docs

#[derive(Debug, Clone, Extension)]
#[extension(tags(tls, net))]
pub struct SecureTransport(..);

Types that implement Extension manually can opt into tagged docs by implementing the marker trait(s) directly:

impl Extension for MyType {}
impl HttpExtension for MyType {}

Implementations on Foreign Types§

§

impl Extension for OriginalRouterUri

Implementors§

§

impl Extension for SingleMessageCompressionOverride

§

impl Extension for Extension

§

impl Extension for PreferredEncoding

§

impl Extension for DecompressedFrom

§

impl Extension for ConnectIpMode

§

impl Extension for DnsResolveIpMode

§

impl Extension for UserId

§

impl Extension for UserAgentSelectFallback

§

impl Extension for RequestInitiator

§

impl Extension for DnsAddresssResolverOverwrite

§

impl Extension for HttpProxyConnectResponseHeaders

§

impl Extension for H2ClientContextParams

§

impl Extension for Http1ClientContextParams

§

impl Extension for TargetHttpVersion

§

impl Extension for Status

§

impl Extension for rama::http::headers::forwarded::Forwarded

§

impl Extension for AcceptedWebSocketProtocol

§

impl Extension for OnUpgrade

§

impl Extension for DnsResolveMode

§

impl Extension for RequestUri

§

impl Extension for RequestComment

§

impl Extension for HarFilePath

§

impl Extension for RequestId

§

impl Extension for DoNotRetry

§

impl Extension for DoNotWriteRequest

§

impl Extension for DoNotWriteResponse

§

impl Extension for UriParams

§

impl Extension for OnInformational

§

impl Extension for ReasonPhrase

§

impl Extension for OriginalHttp1Headers

§

impl Extension for rama::http::proto::h2::ext::Protocol

§

impl Extension for EarlyFrameCapture

§

impl Extension for PseudoHeaderOrder

§

impl Extension for HeaderByteLength

§

impl Extension for RequestExtensions

§

impl Extension for RequestHeaders

§

impl Extension for BodyLimit

§

impl Extension for HttpWebSocketRelayHandshakeRequest

§

impl Extension for HttpWebSocketRelayHandshakeResponse

§

impl Extension for RelayWebSocketConfig

§

impl Extension for CancelIo

§

impl Extension for AbortController

§

impl Extension for InputCounterExtension

§

impl Extension for ProxyAddress

§

impl Extension for ConnectorTarget

§

impl Extension for ConnectionHealth

§

impl Extension for rama::net::forwarded::Forwarded

§

impl Extension for RequestContext

§

impl Extension for ProxyTarget

§

impl Extension for BytesRWTrackerHandle

§

impl Extension for ClientSocketInfo

§

impl Extension for SocketInfo

§

impl Extension for rama::net::Protocol

§

impl Extension for NegotiatedTlsParameters

§

impl Extension for SecureTransport

§

impl Extension for TlsTunnel

§

impl Extension for DpiProxyCredential

§

impl Extension for Basic

§

impl Extension for Proxy

§

impl Extension for ProxyFilter

§

impl Extension for ProxyID

§

impl Extension for TlsConnectorDataBuilder

§

impl Extension for rama::tls::boring::server::TlsAcceptorData

§

impl Extension for TlsConnectorData

§

impl Extension for rama::tls::rustls::server::TlsAcceptorData

§

impl Extension for SelectedUserAgentProfile

§

impl Extension for HttpProfile

§

impl Extension for PreserveHeaderUserAgent

§

impl Extension for RequestClientHints

§

impl Extension for TlsProfile

§

impl Extension for UserAgent

§

impl Extension for ClientUnixSocketInfo

§

impl Extension for UnixSocketInfo

§

impl Extension for UsernameLabels

§

impl Extension for InputExtensions

§

impl<'a> Extension for GrpcMethod<'a>
where 'a: 'static,

§

impl<C, ID> Extension for LruDropPool<C, ID>
where C: Send + Sync + 'static, ID: Send + Sync + Debug + 'static,

§

impl<T> Extension for Connection<T>
where T: Any + Send + Sync + Debug + 'static,

§

impl<T> Extension for Egress<T>
where T: Any + Send + Sync + Debug + 'static,

§

impl<T> Extension for Ingress<T>
where T: Any + Send + Sync + Debug + 'static,

§

impl<T> Extension for Input<T>
where T: Any + Send + Sync + Debug + 'static,

§

impl<T> Extension for Stream<T>
where T: Any + Send + Sync + Debug + 'static,