pub trait DIFInterface {
// Required methods
fn update(
&self,
source_id: TransceiverId,
address: PointerAddress,
update: &DIFUpdateData,
) -> Result<(), DIFUpdateError>;
fn apply(
&self,
callee: DIFValueContainer,
value: DIFValueContainer,
) -> Result<DIFValueContainer, DIFApplyError>;
fn create_pointer(
&self,
value: DIFValueContainer,
allowed_type: Option<DIFTypeDefinition>,
mutability: SharedContainerMutability,
) -> Result<PointerAddress, DIFCreatePointerError>;
fn resolve_pointer_address_external(
&self,
address: PointerAddress,
) -> impl Future<Output = Result<DIFReference, DIFResolveReferenceError>>;
fn resolve_pointer_address_in_memory(
&self,
address: PointerAddress,
) -> Result<DIFReference, DIFResolveReferenceError>;
fn observe_pointer(
&self,
transceiver_id: TransceiverId,
address: PointerAddress,
options: ObserveOptions,
observer: impl Fn(&DIFUpdateData, TransceiverId) + 'static,
) -> Result<u32, DIFObserveError>;
fn update_observer_options(
&self,
address: PointerAddress,
observer_id: u32,
options: ObserveOptions,
) -> Result<(), DIFObserveError>;
fn unobserve_pointer(
&self,
address: PointerAddress,
observer_id: u32,
) -> Result<(), DIFObserveError>;
}Required Methods§
Sourcefn update(
&self,
source_id: TransceiverId,
address: PointerAddress,
update: &DIFUpdateData,
) -> Result<(), DIFUpdateError>
fn update( &self, source_id: TransceiverId, address: PointerAddress, update: &DIFUpdateData, ) -> Result<(), DIFUpdateError>
Applies a DIF update to the value at the given pointer address.
Sourcefn apply(
&self,
callee: DIFValueContainer,
value: DIFValueContainer,
) -> Result<DIFValueContainer, DIFApplyError>
fn apply( &self, callee: DIFValueContainer, value: DIFValueContainer, ) -> Result<DIFValueContainer, DIFApplyError>
Executes an apply operation, applying the value to the callee.
Sourcefn create_pointer(
&self,
value: DIFValueContainer,
allowed_type: Option<DIFTypeDefinition>,
mutability: SharedContainerMutability,
) -> Result<PointerAddress, DIFCreatePointerError>
fn create_pointer( &self, value: DIFValueContainer, allowed_type: Option<DIFTypeDefinition>, mutability: SharedContainerMutability, ) -> Result<PointerAddress, DIFCreatePointerError>
Creates a new pointer and stores it in memory. Returns the address of the newly created pointer.
Sourcefn resolve_pointer_address_external(
&self,
address: PointerAddress,
) -> impl Future<Output = Result<DIFReference, DIFResolveReferenceError>>
fn resolve_pointer_address_external( &self, address: PointerAddress, ) -> impl Future<Output = Result<DIFReference, DIFResolveReferenceError>>
Resolves a pointer address of a pointer that may not be in memory. If the pointer is not in memory, it will be loaded from external storage.
Sourcefn resolve_pointer_address_in_memory(
&self,
address: PointerAddress,
) -> Result<DIFReference, DIFResolveReferenceError>
fn resolve_pointer_address_in_memory( &self, address: PointerAddress, ) -> Result<DIFReference, DIFResolveReferenceError>
Resolves a pointer address of a pointer that is currently in memory. Returns an error if the pointer is not found in memory.
Sourcefn observe_pointer(
&self,
transceiver_id: TransceiverId,
address: PointerAddress,
options: ObserveOptions,
observer: impl Fn(&DIFUpdateData, TransceiverId) + 'static,
) -> Result<u32, DIFObserveError>
fn observe_pointer( &self, transceiver_id: TransceiverId, address: PointerAddress, options: ObserveOptions, observer: impl Fn(&DIFUpdateData, TransceiverId) + 'static, ) -> Result<u32, DIFObserveError>
Starts observing changes to the pointer at the given address. As long as the pointer is observed, it will not be garbage collected.
Sourcefn update_observer_options(
&self,
address: PointerAddress,
observer_id: u32,
options: ObserveOptions,
) -> Result<(), DIFObserveError>
fn update_observer_options( &self, address: PointerAddress, observer_id: u32, options: ObserveOptions, ) -> Result<(), DIFObserveError>
Updates the options for an existing observer on the pointer at the given address. If the observer does not exist, an error is returned.
Sourcefn unobserve_pointer(
&self,
address: PointerAddress,
observer_id: u32,
) -> Result<(), DIFObserveError>
fn unobserve_pointer( &self, address: PointerAddress, observer_id: u32, ) -> Result<(), DIFObserveError>
Stops observing changes to the pointer at the given address. If no other references to the pointer exist, it may be garbage collected after this call.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.