aboutsummaryrefslogtreecommitdiff
path: root/examples/example-dispatch-tree/src
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example-dispatch-tree/src')
-rw-r--r--examples/example-dispatch-tree/src/main.rs48
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/example-dispatch-tree/src/main.rs b/examples/example-dispatch-tree/src/main.rs
new file mode 100644
index 0000000..104f002
--- /dev/null
+++ b/examples/example-dispatch-tree/src/main.rs
@@ -0,0 +1,48 @@
+//! `Mingling` Example - Dispatch Tree
+//!
+//! # How to Deploy
+//! 1. Enable the `dispatch_tree` feature (`comp` is optional)
+//! ```toml
+//! mingling = { version = "...", features = [
+//! "dispatch_tree", // Enable this feature
+//! "comp" // optional
+//! ] }
+//! ```
+//!
+//! 2. Using `cargo expand`:
+//!
+//! ```bash
+//! cargo expand --manifest-path examples/example-dispatch-tree/Cargo.toml > expanded.rs
+//! cat expanded.rs | grep dispatch_args_trie -A 264
+//! ```
+
+#![allow(unused_mut)]
+
+use mingling::macros::{dispatcher, gen_program};
+
+fn main() {
+ let mut program = ThisProgram::new();
+
+ // After enabling `dispatch_tree`, this method will no longer exist
+ // program.with_dispatcher(CommandGreet);
+ //
+ // The `CompletionDispatcher` automatically generated by `comp` will also be imported
+ // automatically
+ // program.with_dispatcher(CompletionDispatcher);
+
+ program.exec();
+}
+
+dispatcher!("greet", CommandGreet => EntryGreet);
+dispatcher!("help", CommandHelp => EntryHelp);
+dispatcher!("quit", CommandQuit => EntryQuit);
+dispatcher!("list", CommandList => EntryList);
+dispatcher!("status", CommandStatus => EntryStatus);
+dispatcher!("save", CommandSave => EntrySave);
+dispatcher!("load", CommandLoad => EntryLoad);
+dispatcher!("config", CommandConfig => EntryConfig);
+dispatcher!("run", CommandRun => EntryRun);
+dispatcher!("debug", CommandDebug => EntryDebug);
+dispatcher!("version", CommandVersion => EntryVersion);
+
+gen_program!();