use effectful::{ bound::{Bool, IsSend, IsSync}, effective::{Canonical, Effective}, environment::Environment, forward_send_sync, }; use mockall::mock; use treaty::{ any::{type_name, AnyTrait}, protocol::visitor::{RequestHint, Value, VisitResult}, protocol::DynWalker, Flow, }; mock! { pub RequestHintVisitor { pub fn request_hint<'r, 'src>(&'r mut self, walker: DynWalker<'r, 'src, E>) -> VisitResult; } } forward_send_sync!({} {} {E: (Environment + Send)} MockRequestHintVisitor); // any_trait! { // impl['ctx][E] MockRequestHintVisitor = [ // RequestHintProto // ] where // E: Environment, // } impl<'ctx, E: Environment + Send> RequestHint<'ctx, E> for MockRequestHintVisitor { fn request_hint<'r>( &'r mut self, walker: DynWalker<'r, 'ctx, E>, ) -> Canonical<'r, VisitResult, E> { E::value(self.request_hint(walker)).cast() } }