in serde-reflection/src/format.rs [505:547]
fn visit<'a>(&'a self, f: &mut dyn FnMut(&'a Format) -> Result<()>) -> Result<()> {
match self {
Self::Variable(variable) => variable.visit(f)?,
Self::TypeName(_)
| Self::Unit
| Self::Bool
| Self::I8
| Self::I16
| Self::I32
| Self::I64
| Self::I128
| Self::U8
| Self::U16
| Self::U32
| Self::U64
| Self::U128
| Self::F32
| Self::F64
| Self::Char
| Self::Str
| Self::Bytes => (),
Self::Option(format)
| Self::Seq(format)
| Self::TupleArray {
content: format, ..
} => {
format.visit(f)?;
}
Self::Map { key, value } => {
key.visit(f)?;
value.visit(f)?;
}
Self::Tuple(formats) => {
for format in formats {
format.visit(f)?;
}
}
}
f(self)
}