дерево вида: 
                  
                  
                  enum Statement {
                  
                  
                  
                  
                  
                      Analyze {
                  
                  
                          table_name: ObjectName,
                  
                  
                          partitions: Option<Vec<Expr>>,
                  
                  
                          ....
                  
                  
                      },
                  
                  
                      Truncate {
                  
                  
                          table_name: ObjectName,
                  
                  
                          partitions: Option<Vec<Expr>>,
                  
                  
                      },
                  
                  
                      Query(Query),
                  
                  
                  }
                  
                  
                  
                  
                  
                  pub struct Query {
                  
                  
                      pub body: SetExpr,
                  
                  
                      pub order_by: Vec<OrderByExpr>,
                  
                  
                     ...
                  
                  
                  }
                  
                  
                  ...
                  
                  
                  
                  
                  
                  Я разбираю текст на входе и получаю  ast кусок которого описан выше (получаю именно Statement) .
                  
                  
                  
                  
                  
                  Вопрос в том есть ли способ написать к  Statement итератор, который бы обходил это дерево?
                  
                  
                  
                  
                  
                  Насколько я понял итератор можно сделать только для одного типа а не их иерархии...
                  
                  
                
Подскажите насчёт итератора плиз
Это скорее будет Visitor, наверн
а что он должен возвращать?
бтв а зачем Option<Vec<Expr>>? Пустой вектор недостаточно пустой? Или это эмуляция undefined/null?
Реализация не моя а из https://github.com/sqlparser-rs/sqlparser-rs
Обсуждают сегодня