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§
Sourcefn resolve(
&mut self,
descriptor: &ExtensionDescriptor,
client: &ExtensionSettings,
server: &ExtensionSettings,
) -> Result<ExtensionSettings, ExtensionNegotiationError>
fn resolve( &mut self, descriptor: &ExtensionDescriptor, client: &ExtensionSettings, server: &ExtensionSettings, ) -> Result<ExtensionSettings, ExtensionNegotiationError>
Resolves both current settings objects into normalized effective settings.
Provided Methods§
Sourcefn resolve_with_disposition(
&mut self,
descriptor: &ExtensionDescriptor,
client: &ExtensionSettings,
server: &ExtensionSettings,
) -> Result<ExtensionSettingsResolution, ExtensionNegotiationError>
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".