Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 56a6063..6fd3a2a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -137,6 +137,8 @@ macro_rules! Walk {
$(pub const $field: usize = Fields::$field as usize;)*
}
+ use $crate::effect::Adapters;
+
match index {
$(fields::$field => {
let key_walker = $crate::walkers::core::value::ValueWalker::new(stringify!($field));
@@ -145,7 +147,14 @@ macro_rules! Walk {
let walker = $crate::walkers::core::key_value::KeyValueWalker::<$crate::protocol::visitor::TagConst<{ $crate::TAG_FIELD.to_int() }>, _, _>::new($crate::protocol::visitor::TagConst, key_walker, value_walker);
- todo!()
+ $crate::Walker::<'ctx, E>::walk(walker, visitor).map(|result| match result {
+ Ok(_) => {
+ Ok($crate::Flow::Continue)
+ }
+ Err(err) => {
+ Err(FieldError(FieldErrorKind::$field(err)))
+ }
+ }).into()
// E::map($crate::Walker::<'ctx, E>::walk(walker, visitor), |result| match result {
// Ok(_) => {