Diffstat (limited to 'src/walk/walkers/core/int.rs')
-rw-r--r--src/walk/walkers/core/int.rs109
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()
}