Diffstat (limited to 'src/walk/walkers/core/int.rs')
| -rw-r--r-- | src/walk/walkers/core/int.rs | 109 |
1 files changed, 57 insertions, 52 deletions
diff --git a/src/walk/walkers/core/int.rs b/src/walk/walkers/core/int.rs index 1826803..2416849 100644 --- a/src/walk/walkers/core/int.rs +++ b/src/walk/walkers/core/int.rs @@ -1,22 +1,20 @@ use effectful::bound::Dynamic; use effectful::effective::Effective; use effectful::environment::{DynBind, Environment, NativeForm}; -use effectful::higher_ranked::Mut; use effectful::SendSync; use crate::{ - any::OwnedStatic, - any_trait, + any::AnyTrait, + any::{type_name, OwnedStatic}, hkt::Marker, - never::Never, protocol::{ visitor::{ - request_hint, visit_value, EffectiveVisitExt as _, ValueKnown, ValueProto, VisitResult, + request_hint, visit_value, EffectiveVisitExt as _, Value, ValueKnown, VisitResult, }, - walker::hint::{DynVisitorWith, Hint, HintProto, MetaHint, MetaKnown}, + walker::hint::{DynVisitorWith, Hint}, DynVisitor, DynWalker, }, - Flow, Walker, + Walker, }; #[derive(SendSync)] @@ -275,51 +273,56 @@ impl<T> Integer for T where { } -any_trait! { - impl['ctx, T][E] IntegerWalker<T, E> = [ - HintProto<ValueProto<OwnedStatic<i8>, E>>, - HintProto<ValueProto<OwnedStatic<i16>, E>>, - HintProto<ValueProto<OwnedStatic<i32>, E>>, - HintProto<ValueProto<OwnedStatic<i64>, E>>, - HintProto<ValueProto<OwnedStatic<i128>, E>>, - HintProto<ValueProto<OwnedStatic<u8>, E>>, - HintProto<ValueProto<OwnedStatic<u16>, E>>, - HintProto<ValueProto<OwnedStatic<u32>, E>>, - HintProto<ValueProto<OwnedStatic<u64>, E>>, - HintProto<ValueProto<OwnedStatic<u128>, E>>, - ] where - T: Integer, - E: Environment, - Dynamic<T>: DynBind<E>, - Dynamic<OwnedStatic<i8>>: DynBind<E>, - Dynamic<OwnedStatic<i16>>: DynBind<E>, - Dynamic<OwnedStatic<i32>>: DynBind<E>, - Dynamic<OwnedStatic<i64>>: DynBind<E>, - Dynamic<OwnedStatic<i128>>: DynBind<E>, - Dynamic<OwnedStatic<isize>>: DynBind<E>, - Dynamic<OwnedStatic<u8>>: DynBind<E>, - Dynamic<OwnedStatic<u16>>: DynBind<E>, - Dynamic<OwnedStatic<u32>>: DynBind<E>, - Dynamic<OwnedStatic<u64>>: DynBind<E>, - Dynamic<OwnedStatic<u128>>: DynBind<E>, - Dynamic<OwnedStatic<usize>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<i8>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<i16>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<i32>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<i64>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<i128>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<isize>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<u8>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<u16>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<u32>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<u64>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<u128>>: DynBind<E>, - for<'a> Dynamic<&'a OwnedStatic<usize>>: DynBind<E>, +impl<'ctx, T, E> AnyTrait<'ctx> for IntegerWalker<T, E> +where + T: Integer, + E: Environment, + Dynamic<T>: DynBind<E>, + Dynamic<OwnedStatic<i8>>: DynBind<E>, + Dynamic<OwnedStatic<i16>>: DynBind<E>, + Dynamic<OwnedStatic<i32>>: DynBind<E>, + Dynamic<OwnedStatic<i64>>: DynBind<E>, + Dynamic<OwnedStatic<i128>>: DynBind<E>, + Dynamic<OwnedStatic<isize>>: DynBind<E>, + Dynamic<OwnedStatic<u8>>: DynBind<E>, + Dynamic<OwnedStatic<u16>>: DynBind<E>, + Dynamic<OwnedStatic<u32>>: DynBind<E>, + Dynamic<OwnedStatic<u64>>: DynBind<E>, + Dynamic<OwnedStatic<u128>>: DynBind<E>, + Dynamic<OwnedStatic<usize>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<i8>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<i16>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<i32>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<i64>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<i128>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<isize>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<u8>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<u16>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<u32>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<u64>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<u128>>: DynBind<E>, + for<'a> Dynamic<&'a OwnedStatic<usize>>: DynBind<E>, +{ } +// any_trait! { +// impl['ctx, T][E] IntegerWalker<T, E> = [ +// HintProto<ValueProto<OwnedStatic<i8>, E>>, +// HintProto<ValueProto<OwnedStatic<i16>, E>>, +// HintProto<ValueProto<OwnedStatic<i32>, E>>, +// HintProto<ValueProto<OwnedStatic<i64>, E>>, +// HintProto<ValueProto<OwnedStatic<i128>, E>>, +// HintProto<ValueProto<OwnedStatic<u8>, E>>, +// HintProto<ValueProto<OwnedStatic<u16>, E>>, +// HintProto<ValueProto<OwnedStatic<u32>, E>>, +// HintProto<ValueProto<OwnedStatic<u64>, E>>, +// HintProto<ValueProto<OwnedStatic<u128>, E>>, +// ] where +// } + macro_rules! impl_hints { ($($type:ty),* $(,)?) => { - $(impl<'ctx, T: Integer, E: Environment> Hint<'ctx, ValueProto<OwnedStatic<$type>, E>> + $(impl<'ctx, T: Integer, E: Environment> Hint<'ctx, type_name::Raised<'static, 'ctx, dyn Value<'ctx, OwnedStatic<$type>, E>>> for IntegerWalker<T, E> where Dynamic<T>: DynBind<E>, @@ -328,8 +331,8 @@ macro_rules! impl_hints { { fn hint<'this: 'e, 'visitor: 'e, 'hint: 'e, 'e>( &'this mut self, - visitor: DynVisitorWith<'visitor, 'ctx, ValueProto<OwnedStatic<$type>, E>>, - _hint: MetaHint<'hint, 'ctx, ValueProto<OwnedStatic<$type>, E>>, + visitor: DynVisitorWith<'visitor, 'ctx, type_name::Raised<'static, 'ctx, dyn Value<'ctx, OwnedStatic<$type>, E>>>, + _hint: (), ) -> NativeForm<'e, crate::protocol::visitor::VisitResult, E> where 'ctx: 'this + 'visitor + 'hint + 'e, @@ -345,8 +348,10 @@ macro_rules! impl_hints { fn known<'a>( &'a mut self, - _hint: &'a MetaHint<'a, 'ctx, ValueProto<OwnedStatic<$type>, E>>, - ) -> NativeForm<'a, Result<MetaKnown<'a, 'ctx, ValueProto<OwnedStatic<$type>, E>>, ()>, E> + _hint: &'a (), + ) -> NativeForm<'a, Result<ValueKnown<'a, OwnedStatic<$type>>, ()>, E> + where + ValueKnown<'a, OwnedStatic<$type>>: DynBind<E> { E::value(Ok(ValueKnown { preview: None })).cast() } |