pub trait ExtensionStateCodec:
Send
+ Sync
+ 'static {
type State: Serialize + DeserializeOwned + Send + Sync + 'static;
// Required methods
fn extension_id(&self) -> ExtensionId;
fn key(&self) -> ExtensionStateKey;
fn scope(&self) -> ExtensionStoreScope;
fn schema_version(&self) -> u32;
// Provided methods
fn migrate_state(
&self,
_record: &ExtensionStateRecord,
) -> Result<Option<ExtensionStateRecord>> { ... }
fn encode_state(&self, state: &Self::State) -> Result<ExtensionStateRecord> { ... }
fn decode_state(&self, record: &ExtensionStateRecord) -> Result<Self::State> { ... }
}Required Associated Types§
Required Methods§
fn extension_id(&self) -> ExtensionId
fn key(&self) -> ExtensionStateKey
fn scope(&self) -> ExtensionStoreScope
fn schema_version(&self) -> u32
Provided Methods§
fn migrate_state( &self, _record: &ExtensionStateRecord, ) -> Result<Option<ExtensionStateRecord>>
fn encode_state(&self, state: &Self::State) -> Result<ExtensionStateRecord>
fn decode_state(&self, record: &ExtensionStateRecord) -> Result<Self::State>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".