Generate text railroad diagrams in rust.
```rust use utf_railroad::{Diagram, Terminal, NonTerminal};
fn main() { let diagram = Diagram::default() .push(Box::new(Terminal::new("Hello"))) .push(Box::new(NonTerminal::new("World!"))) .gap_size(2);
println!("{}", diagram);
} ```
Output:
╭───────╮ ┏━━━━━━━━┓
╟──│ Hello │──┃ World! ┃──╢
╰───────╯ ┗━━━━━━━━┛
JSON Number:
╭───╮ ╭───╮ ╭───╮ ╭───────╮ ╭───╮ ╭───╮ ╭───────╮
╟──┬│ - │┬──┬──────────│ 0 │───────────┬──┬│ . │──┬│ digit │┬┬──┬┬│ e │┬──┬┬│ + │┬┬──┬│ digit │┬┬──╢
│╰───╯│ │ ╰───╯ │ │╰───╯ │╰───────╯││ ││╰───╯│ ││╰───╯││ │╰───────╯││
╰─────╯ │╭───────────╮ ╭───────╮ │ │ ╰1+ times─╯│ ││╭───╮│ ││╭───╮││ ╰1+ times─╯│
╰│ digit 1-9 │──┬│ digit │┬╯ ╰──────────────────╯ │╰│ E │╯ │╰│ - │╯│ │
╰───────────╯ │╰───────╯│ │ ╰───╯ │ ╰───╯ │ │
╰0+ times─╯ │ ╰───────╯ │
╰───────────────────────────────╯
JSON String:
╭───╮ ╭──────────────────────────────────────────────────────────╮ ╭───╮
╟──│ " │──┬┬│ Any unicode character except " or \ or control character │┬┬──│ " │──╢
╰───╯ ││╰──────────────────────────────────────────────────────────╯││ ╰───╯
││ ╭───╮ ╭───╮ ││
│╰──────────│ \ │──┬────────────│ " │─────────────┬───────────╯│
│ ╰───╯ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ \ │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ / │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ b │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ f │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ n │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ r │─────────────┤ │
│ │ ╰───╯ │ │
│ │ ╭───╮ │ │
│ ├────────────│ t │─────────────┤ │
│ │ ╰───╯ │ │
│ │╭───╮ ╭───────────────────╮ │ │
│ ╰│ u │──┬│ hexadecimal digit │┬╯ │
│ ╰───╯ │╰───────────────────╯│ │
│ ╰───────4 times───────╯ │
╰───────────────────────────0+ times───────────────────────────╯