Skip to main content

ExtensionSettingsCompatibilityResolver

Trait ExtensionSettingsCompatibilityResolver 

Source
pub trait ExtensionSettingsCompatibilityResolver {
    // Required method
    fn resolve(
        &mut self,
        descriptor: &ExtensionDescriptor,
        client: &ExtensionSettings,
        server: &ExtensionSettings,
    ) -> Result<ExtensionSettings, ExtensionNegotiationError>;

    // Provided method
    fn resolve_with_disposition(
        &mut self,
        descriptor: &ExtensionDescriptor,
        client: &ExtensionSettings,
        server: &ExtensionSettings,
    ) -> Result<ExtensionSettingsResolution, ExtensionNegotiationError> { ... }
}
Expand description

A typed compatibility resolver selected by a frozen descriptor ID/version.

This protocol-only seam deliberately accepts no server or client runtime object. Implementations decode the two settings objects independently, check compatibility, and return a normalized effective object.

Required Methods§

Source

fn resolve( &mut self, descriptor: &ExtensionDescriptor, client: &ExtensionSettings, server: &ExtensionSettings, ) -> Result<ExtensionSettings, ExtensionNegotiationError>

Resolves both current settings objects into normalized effective settings.

Provided Methods§

Source

fn resolve_with_disposition( &mut self, descriptor: &ExtensionDescriptor, client: &ExtensionSettings, server: &ExtensionSettings, ) -> Result<ExtensionSettingsResolution, ExtensionNegotiationError>

Resolves settings and may select an ordinary inactive fallback.

Existing resolvers that only implement Self::resolve remain active on success. Descriptors with a valid non-activating setting profile can override this method without treating that profile as malformed.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§