Trait serde_reflection::FormatHolder[][src]

pub trait FormatHolder {
    fn visit<'a>(
        &'a self,
        f: &mut dyn FnMut(&'a Format) -> Result<()>
    ) -> Result<()>;
fn visit_mut(
        &mut self,
        f: &mut dyn FnMut(&mut Format) -> Result<()>
    ) -> Result<()>;
fn unify(&mut self, other: Self) -> Result<()>;
fn is_unknown(&self) -> bool; fn normalize(&mut self) -> Result<()> { ... }
fn reduce(&mut self) { ... } }
Expand description

Common methods for nodes in the AST of formats.

Required methods

Visit all the formats in self in a depth-first way. Variables are not supported and will cause an error.

Mutably visit all the formats in self in a depth-first way.

  • Replace variables (if any) with their known values then apply the visiting function f.
  • Return an error if any variable has still an unknown value (thus cannot be removed).

Update variables and add missing enum variants so that the terms match. This is a special case of term unification:

  • Variables occurring in other must be “fresh” and distinct from each other. By “fresh”, we mean that they do not occur in self and have no known value yet.
  • If needed, enums in self will be extended with new variants taken from other.
  • Although the parameter other is consumed (i.e. taken by value), all variables occurring either in self or other are correctly updated.

Whether this format is a variable with no known value yet.

Provided methods

Finalize the formats within self by removing variables and making sure that all eligible tuples are compressed into a TupleArray. Return an error if any variable has an unknown value.

Attempt to remove known variables within self. Silently abort if some variables have unknown values.

Implementors