|
@@ -0,0 +1,121 @@
|
|
|
+use crate::{Walkable,Walker};
|
|
|
+
|
|
|
+impl Walkable for u8 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::u8)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for i8 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::i8)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for u16 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::u16)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for i16 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::i16)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for u32 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::u32)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for i32 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::i32)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for u64 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::u64)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for i64 {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::i64)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for usize {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_integer(crate::IntegerType::usize)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<T: Walkable> Walkable for Option<T> {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_option::<T>()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl Walkable for () {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_unit()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<T0: Walkable> Walkable for (T0,) {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ struct Tuple<T> { pd: core::marker::PhantomData<T> }
|
|
|
+ impl<T0: Walkable> Walkable for Tuple<(T0,)> {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_field::<T0>("0");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ walker.visit_tuple::<Tuple<(T0,)>>();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<T0: Walkable, T1: Walkable> Walkable for (T0,T1) {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ struct Tuple<T> { pd: core::marker::PhantomData<T> }
|
|
|
+ impl<T0: Walkable, T1: Walkable> Walkable for Tuple<(T0,T1)> {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_field::<T0>("0");
|
|
|
+ walker.visit_field::<T1>("1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ walker.visit_tuple::<Tuple<(T0,T1)>>();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<T0: Walkable, T1: Walkable, T2: Walkable> Walkable for (T0,T1,T2) {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ struct Tuple<T> { pd: core::marker::PhantomData<T> }
|
|
|
+ impl<T0: Walkable, T1: Walkable, T2: Walkable> Walkable for Tuple<(T0,T1,T2)> {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_field::<T0>("0");
|
|
|
+ walker.visit_field::<T1>("1");
|
|
|
+ walker.visit_field::<T2>("2");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ walker.visit_tuple::<Tuple<(T0,T1,T2)>>();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl<T0: Walkable, T1: Walkable, T2: Walkable, T3: Walkable> Walkable for (T0,T1,T2,T3) {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ struct Tuple<T> { pd: core::marker::PhantomData<T> }
|
|
|
+ impl<T0: Walkable, T1: Walkable, T2: Walkable, T3: Walkable> Walkable for Tuple<(T0,T1,T2,T3)> {
|
|
|
+ fn walk_with<W: Walker>(walker: &mut W) {
|
|
|
+ walker.visit_field::<T0>("0");
|
|
|
+ walker.visit_field::<T1>("1");
|
|
|
+ walker.visit_field::<T2>("2");
|
|
|
+ walker.visit_field::<T3>("3");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ walker.visit_tuple::<Tuple<(T0,T1,T2,T3)>>();
|
|
|
+ }
|
|
|
+}
|