foreach_embedded
This commit is contained in:
parent
e9b5b3549c
commit
7c8a5c61ca
|
@ -51,6 +51,17 @@ pub trait NestedValue<D: Embeddable>: Sized + Debug + Clone + Eq + Hash + Ord {
|
||||||
{
|
{
|
||||||
Ok(M::wrap(self.annotations().copy_via(f)?, self.value().copy_via(f)?))
|
Ok(M::wrap(self.annotations().copy_via(f)?, self.value().copy_via(f)?))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn foreach_embedded<F, Err>(&self, f: &mut F) -> Result<(), Err>
|
||||||
|
where
|
||||||
|
F: FnMut(&D) -> Result<(), Err>
|
||||||
|
{
|
||||||
|
match &self.annotations().0 {
|
||||||
|
None => (),
|
||||||
|
Some(vs) => for v in vs { v.foreach_embedded(f)? },
|
||||||
|
}
|
||||||
|
self.value().foreach_embedded(f)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The `Value`s from the specification.
|
/// The `Value`s from the specification.
|
||||||
|
@ -796,6 +807,29 @@ impl<N: NestedValue<D>, D: Embeddable> Value<N, D> {
|
||||||
Value::Embedded(d) => f(d)?,
|
Value::Embedded(d) => f(d)?,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn foreach_embedded<F, Err>(&self, f: &mut F) -> Result<(), Err>
|
||||||
|
where
|
||||||
|
F: FnMut(&D) -> Result<(), Err>
|
||||||
|
{
|
||||||
|
match self {
|
||||||
|
Value::Boolean(_) |
|
||||||
|
Value::Float(_) |
|
||||||
|
Value::Double(_) |
|
||||||
|
Value::SignedInteger(_) |
|
||||||
|
Value::String(_) |
|
||||||
|
Value::ByteString(_) |
|
||||||
|
Value::Symbol(_) => Ok(()),
|
||||||
|
Value::Record(r) => Ok(for v in r.fields_vec() { v.foreach_embedded(f)? }),
|
||||||
|
Value::Sequence(vs) => Ok(for v in vs { v.foreach_embedded(f)? }),
|
||||||
|
Value::Set(vs) => Ok(for v in vs { v.foreach_embedded(f)? }),
|
||||||
|
Value::Dictionary(d) => Ok(for (k, v) in d {
|
||||||
|
k.foreach_embedded(f)?;
|
||||||
|
v.foreach_embedded(f)?;
|
||||||
|
}),
|
||||||
|
Value::Embedded(d) => f(d),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<N: NestedValue<D>, D: Embeddable> Index<usize> for Value<N, D> {
|
impl<N: NestedValue<D>, D: Embeddable> Index<usize> for Value<N, D> {
|
||||||
|
|
Loading…
Reference in New Issue