#[cfg(feature = "alloc")]
mod validator;
use core::any::TypeId;
use rancor::{Fallible, Strategy};
#[cfg(feature = "alloc")]
pub use self::validator::*;
pub enum ValidationState {
Started,
Pending,
Finished,
}
pub trait SharedContext<E = <Self as Fallible>::Error> {
fn start_shared(
&mut self,
address: usize,
type_id: TypeId,
) -> Result<ValidationState, E>;
fn finish_shared(
&mut self,
address: usize,
type_id: TypeId,
) -> Result<(), E>;
}
impl<T, E> SharedContext<E> for Strategy<T, E>
where
T: SharedContext<E>,
{
fn start_shared(
&mut self,
address: usize,
type_id: TypeId,
) -> Result<ValidationState, E> {
T::start_shared(self, address, type_id)
}
fn finish_shared(
&mut self,
address: usize,
type_id: TypeId,
) -> Result<(), E> {
T::finish_shared(self, address, type_id)
}
}