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 misuseExtensions::insert()withExtensions::insert_arc(). Otherwise this is very tricky and error proneVec<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
TlsExtension— TLS and secure transportHttpExtension— HTTP protocolNetExtension— Network and connection levelUaExtension— User-agent emulationProxyExtension— ProxyWsExtension— WebSocketDnsExtension— DNS resolutionGrpcExtension— gRPC
#[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 {}Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
impl Extension for OriginalRouterUri
Implementors§
impl Extension for AbortController
impl Extension for AbortIo
impl Extension for AcceptedWebSocketProtocol
impl Extension for AlpnPolicy
impl Extension for AltSvcObserverExtension
impl Extension for AltSvcReceivedAt
impl Extension for AltSvcSender
impl Extension for Basic
impl Extension for BodyLimit
impl Extension for BoringAlps
impl Extension for BoringCertCompression
impl Extension for BoringCipherSuites
impl Extension for BoringClientHelloPadding
impl Extension for BoringDelegatedCredentials
impl Extension for BoringEncryptedClientHello
impl Extension for BoringExtensionOrder
impl Extension for BoringExtensionPresence
impl Extension for BoringGrease
impl Extension for BoringGreaseSignatureSchemes
impl Extension for BoringMaxVersion
impl Extension for BoringMinVersion
impl Extension for BoringOcspStapling
impl Extension for BoringPermuteExtensions
impl Extension for BoringRecordSizeLimit
impl Extension for BoringRequestedTrustAnchors
impl Extension for BoringServerCertCompression
impl Extension for BoringServerCertIssuer
impl Extension for BoringServerCipherSuites
impl Extension for BoringServerPaddingRequest
impl Extension for BoringServerSignatureSchemes
impl Extension for BoringServerSupportedGroups
impl Extension for BoringServerVerifyCertStore
impl Extension for BoringSignatureSchemes
impl Extension for BoringSignedCertTimestamps
impl Extension for BoringSupportedGroups
impl Extension for BoringTls12SessionTickets
impl Extension for BytesRWTrackerHandle
impl Extension for CancelIo
impl Extension for CapsuleObservation
impl Extension for ClientControlPreferences
impl Extension for ClientHandshake
impl Extension for ClientSettingsProfile
impl Extension for CloseDelimitedResponse
impl Extension for ConnectIpMode
impl Extension for ConnectionAdmission
impl Extension for ConnectionAttempt
impl Extension for ConnectionBootstrapRequest
impl Extension for ConnectionClose
impl Extension for ConnectionContext
impl Extension for ConnectionHealthWatcher
impl Extension for ConnectionId
impl Extension for ConnectionPolicyScope
impl Extension for ConnectionQlogControl
impl Extension for ConnectionReuse
impl Extension for ConnectionSelection
impl Extension for ConnectorTarget
impl Extension for ConnectorTargetStream
impl Extension for ConnectorTransportProtocol
impl Extension for ControlConnection
impl Extension for DecompressedFrom
impl Extension for DnsAddresssResolverOverwrite
impl Extension for DnsResolveIpMode
impl Extension for DnsResolveMode
impl Extension for DoNotRetry
impl Extension for DoNotWriteRequest
impl Extension for DoNotWriteResponse
impl Extension for DpiProxyCredential
impl Extension for DrawKey
impl Extension for DynTlsServerCertChainPolicy
impl Extension for EarlyFrameCapture
impl Extension for EchGrease
impl Extension for EncoderPreferences
impl Extension for EstablishedHttpService
impl Extension for EstablishedProxyRoute
impl Extension for Extension
impl Extension for FallbackHttpVersion
impl Extension for FastCgiHttpEnv
impl Extension for FieldSectionBase
impl Extension for ForbiddenTrailers
impl Extension for rama::net::forwarded::Forwarded
impl Extension for rama::http::headers::forwarded::Forwarded
impl Extension for ForwardedSelectionPolicy
impl Extension for GeoLocation
impl Extension for H2ClientContextParams
impl Extension for H2ServerContextParams
impl Extension for H2SettingsLimits
impl Extension for H3Observer
impl Extension for H3RequestObservation
impl Extension for HaProxyCommand
impl Extension for HaProxyTlvs
impl Extension for HarFilePath
impl Extension for HeaderByteLength
impl Extension for HeaderPreferences
impl Extension for Http1ClientContextParams
impl Extension for Http3Coalescing
impl Extension for HttpDatagrams
impl Extension for HttpExchangeId
impl Extension for HttpProxyConnectResponseHeaders
impl Extension for HttpRequestVersion
impl Extension for HttpServiceCandidates
impl Extension for HttpServiceSelection
impl Extension for HttpUpgradeCaptureGuard
impl Extension for HttpUpgradeContext
impl Extension for HttpUpgradeMitmRelayExtensions
impl Extension for HttpWebSocketRelayHandshakeRequest
impl Extension for HttpWebSocketRelayHandshakeResponse
impl Extension for InputCounterExtension
impl Extension for IntoResponseFailed
impl Extension for IpGeoInfo
impl Extension for MaxConcurrency
impl Extension for ModifyRustlsClientConfig
impl Extension for ModifyRustlsServerConfig
impl Extension for MultipartConfig
impl Extension for NativeDatagrams
impl Extension for NegotiatedTlsParameters
impl Extension for OnInformational
impl Extension for OnMalformedMessage
impl Extension for OnUpgrade
impl Extension for OriginalResponseBodyFraming
impl Extension for PathRouteCaptures
impl Extension for PeerH2Settings
impl Extension for PlaintextHttpProxyMode
impl Extension for PoolPartition
impl Extension for Preferences
impl Extension for PreferredEncoding
impl Extension for PreparedConnectionComponents
impl Extension for PreparedConnectionProfile
impl Extension for PreparedRequestProfile
impl Extension for PreserveClientHints
impl Extension for PreserveHeaderUserAgent
impl Extension for PriorityHandle
impl Extension for PriorityObserver
impl Extension for ProfilePreservationReport
impl Extension for ProfileSeed
impl Extension for ProfileSelectFallback
impl Extension for ProtectionError
impl Extension for rama::net::Protocol
impl Extension for rama::http::proto::ext::Protocol
impl Extension for Proxy
impl Extension for ProxyFilter
impl Extension for ProxyID
impl Extension for ProxyRoute
impl Extension for ProxyRouteIndex
impl Extension for ProxyRoutes
impl Extension for PseudoHeaderOrder
impl Extension for PseudoHeaderSensitivity
impl Extension for QuicObservation
impl Extension for QuicPeekRejection
impl Extension for QuicProfile
std only.