use ast2str::{utils::AstToStrExt, AstToStr}; use pretty_assertions::assert_eq; #[derive(AstToStr)] pub enum Tuple { Unit, Tuple(#[rename = "elements"] Vec), } #[derive(AstToStr)] pub enum Expr { Tuple(#[forward] Tuple), } fn get_ast() -> Expr { Expr::Tuple(Tuple::Tuple(vec![ Expr::Tuple(Tuple::Unit), Expr::Tuple(Tuple::Tuple(vec![Expr::Tuple(Tuple::Unit)])), ])) } #[test] fn test_ast_to_str() { let ast = get_ast(); assert_eq!( ast.ast_to_str().trim().with_display_as_debug_wrapper(), r#" Tuple::Tuple ╰─elements=↓ ├─Tuple::Unit ╰─Tuple::Tuple ╰─elements=↓ ╰─Tuple::Unit "# .trim() .with_display_as_debug_wrapper(), ); }