Rumbrello is a modern, high-performance UML architecture visualizer, reverse-engineering engine, and interactive structural modeling tool designed specifically for Rust codebases.
It parses Rust source code, resolves type layout semantics, lifetime constraints, and concurrency lock flow, and renders dynamic, interactive UML class diagrams and scope/concurrency sequence diagrams.
- Method 1: Fast Syn AST — Lightning-fast AST extractor using
synandquote. Ideal for rapid workspace scans. - Method 2: Hybrid RA Macro Expansion — Integrates
rust-analyzersyntax parser to expand macro invocations while extracting detailed item ASTs. - Method 3: Standalone rust-analyzer LSP — Connects directly to a
rust-analyzerLSP instance for full semantic resolution.
- Auto Traits Inference: Automatically determines
SendandSyncimplementations. #[repr(...)]Validation: Auditsrepr(C),repr(transparent), and alignment directives for memory layout correctness.- Lifetime Constraint Graphs: Visualizes outlives bounds (
'a: 'b), Higher-Rank Trait Bounds (HRTBfor<'a>), and borrow relationships. - DST & ZST Classification: Identifies Dynamically Sized Types (DST) and Zero-Sized Types (ZST).
- Atomic & Leak Detection: Highlights
AtomicBool/AtomicUsizeprimitives and memory leaks (Box::leak,mem::forget,ManuallyDrop).
- Scope View: Visualizes borrow scopes and variable lifetimes using full paths (
crate::module::Struct::fn). - Concurrency View: Tracks mutex locks, cross-thread channel channels, and thread sequence flows.
- Automatic Sanitizing: Strips raw
#[doc = "..."]attribute wrappers and rustdoc control directives (#[doc(hidden)],#[doc(inline)],#[doc(alias = "...")]). - Hover Markdown Tooltips: Displays formatted Markdown doc comments on mouse hover over symbol nodes.
- Left Hierarchy Tree Icons: Badges module doc comments with
📜 //!and symbol docs with📜 docin the Workspace Explorer. - Inspector Comment Editor: Full support for adding, editing, and deleting Markdown comments at the symbol, field, variant, parameter, and trait bound levels.
- Automatically excludes
test,bench,fuzz, andfuzzingmodules upon project import to maintain clean architectural views.
- Multi-node selection, drag-to-move, and drag-to-resize.
- Shift-drag / Right-click line connection with glowing target highlights (
#2ed573). - Editable Existing Relations: Modify relation kinds (Ownership, SharedRef, SmartPointer, etc.) directly in the Inspector.
The project is structured as a modular Cargo workspace:
| Crate | Description |
|---|---|
ruml_core |
Core data models (RIR, Symbols, Relations, DocCommentItem, CommentKind) |
ruml_parser |
Method 1 Syn AST extractor, Scope & Concurrency analyzers, Auto-traits & Repr validators |
ruml_ra_parser |
Method 2 Hybrid RA Macro & Method 3 Standalone RA LSP extractors |
ruml_layout |
Sugiyama layered layout, force-directed graph, grid, and tree layout algorithms |
ruml_dsl |
Ruml DSL parser, Mermaid exporter, and PlantUML exporter |
ruml_storage |
JSON and binary serialization for diagram persistence |
ruml_codegen |
Rust code generation and AST patching engine |
ruml_gui |
egui-based GUI application (Canvas, Inspector, Hierarchy Explorer, Scope/Concurrency views) |
- Rust 1.75+ (Edition 2021)
- Cargo
Launch the desktop GUI:
cargo run --bin ruml_guiRun the full workspace test suite:
cargo test --workspace -- --skip test_parse_large_projects_performanceMIT OR Apache-2.0