ariel-rs
A faithful Rust port of Mermaid JS — renders diagrams to SVG without a browser, Node.js, or any JavaScript runtime.
Features
- 29 diagram types — flowchart, sequence, class, state, ER, gantt, git, pie, mindmap, timeline, quadrant, xychart, C4, block, packet, journey, requirement, kanban, sankey, treemap, radar, venn, architecture, eventmodeling, cynefin, ishikawa, wardley, zenuml, railroad
- Headless — pure Rust, no DOM, no JS runtime
- Fast — renders diagrams in microseconds
- Accurate — pixel-tested against Mermaid JS reference output (71-diagram visual regression suite)
- Themes — Default, Dark, Forest, Neutral
Usage
[]
= "0.1.0"
use ;
let svg = render;
println!;
Supported diagram types
| Type | Keyword |
|---|---|
| Flowchart | flowchart / graph |
| Sequence | sequenceDiagram |
| Class | classDiagram |
| State | stateDiagram-v2 |
| Entity Relationship | erDiagram |
| Gantt | gantt |
| Git | gitGraph |
| Pie | pie |
| Mindmap | mindmap |
| Timeline | timeline |
| Quadrant | quadrantChart |
| XY Chart | xychart-beta |
| C4 | C4Context / C4Container / … |
| Block | block-beta |
| Packet | packet-beta |
| Journey | journey |
| Requirement | requirementDiagram |
| Kanban | kanban |
| Sankey | sankey-beta |
| Treemap | treemap |
| Radar | radar |
| Venn | venn |
| Architecture | architecture-beta |
| Event Modeling | eventmodeling |
| Cynefin | cynefin |
| Ishikawa | fishbone / ishikawa |
| Wardley | wardley |
| ZenUML | zenuml |
| Railroad | railroad-beta |
Error handling
If the input is invalid or the diagram type is unrecognised, render() returns a styled error SVG matching Mermaid's browser error format — it never panics.
Themes
use ;
let svg = render;
Available themes: Theme::Default, Theme::Dark, Theme::Forest, Theme::Neutral.
Development
Run tests
Run tests with coverage
Visual regression
Requires Node.js.
Architecture
ariel-rs uses dagre-dgl-rs for directed graph layout (flowcharts, class diagrams, state diagrams, ER diagrams) and implements all other diagram types from scratch.
Dependencies
| Crate | Purpose |
|---|---|
dagre-dgl-rs |
Directed graph layout |
ab_glyph |
Font metrics for text measurement |
indexmap |
Deterministic map iteration |
serde_json |
JSON parsing (corpus loader) |
chrono |
Date handling for gantt diagrams |
License
MIT © 2026 Rochanglien Infimate