Closed KodrAus closed 9 months ago
It would be helpful to have some way to visit the elements of sequences. Something like:
pub trait Visitor<'v> { fn visit_sequence(&mut self, value: Sequence) -> Result<(), Error> { self.visit_any(value.as_value_bag()) } fn visit_borrowed_sequence(&mut self, value: Sequence<'v>) -> Result<(), Error> { self.visit_sequence(value) } } pub trait SequenceVisitor<'v> { fn visit_elem(&mut self, elem: ValueBag) -> Result<(), Error>; fn visit_borrowed_elem(&mut self, elem: ValueBag<'v>) -> Result<(), Error> { self.visit_elem(elem) } } pub struct Sequence<'v>(ValueBag<'v>); impl<'v> Sequence<'v> { pub fn as_value_bag(&self) -> ValueBag { self.0.by_ref() } pub fn visit(&self, visitor: impl SequenceVisitor<'v>) -> Result<(), Error> { .. } }
For sval, we can't guarantee elements are primitive types unless we have alloc available.
sval
alloc
This is just a sketch, but seems worth exploring.
It would be helpful to have some way to visit the elements of sequences. Something like:
For
sval
, we can't guarantee elements are primitive types unless we havealloc
available.This is just a sketch, but seems worth exploring.