summaryrefslogtreecommitdiff
path: root/mingling/src/lib.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-04-01 20:14:56 +0800
committer魏曹先生 <1992414357@qq.com>2026-04-01 20:16:17 +0800
commitf1ed18e668a830646fe507ee33c4b010a1690342 (patch)
tree6d13b5ca65ec4df6b8df1c03df3c96301d435bbf /mingling/src/lib.rs
parent227e710fe716c8901ee02e670a57fb70eb3f222b (diff)
Add documentation for mingling_core
Diffstat (limited to 'mingling/src/lib.rs')
-rw-r--r--mingling/src/lib.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/mingling/src/lib.rs b/mingling/src/lib.rs
index 86e1152..741effb 100644
--- a/mingling/src/lib.rs
+++ b/mingling/src/lib.rs
@@ -1,3 +1,55 @@
+//! Mingling
+//!
+//! # Intro
+//! `Mingling` is a Rust command-line framework. Its name comes from the Chinese Pinyin for "命令", which means "Command".
+//!
+//! # Use
+//!
+//! ```rust
+//! use mingling::macros::{dispatcher, gen_program, r_println, renderer};
+//!
+//! #[tokio::main]
+//! async fn main() {
+//! let mut program = DefaultProgram::new();
+//! program.with_dispatcher(HelloCommand);
+//!
+//! // Execute
+//! program.exec().await;
+//! }
+//!
+//! // Define command: "<bin> hello"
+//! dispatcher!("hello", HelloCommand => HelloEntry);
+//!
+//! // Render HelloEntry
+//! #[renderer]
+//! fn render_hello_world(_prev: HelloEntry) {
+//! r_println!("Hello, World!")
+//! }
+//!
+//! // Fallbacks
+//! #[renderer]
+//! fn fallback_dispatcher_not_found(prev: DispatcherNotFound) {
+//! r_println!("Dispatcher not found for command `{}`", prev.join(", "))
+//! }
+//!
+//! #[renderer]
+//! fn fallback_renderer_not_found(prev: RendererNotFound) {
+//! r_println!("Renderer not found `{}`", *prev)
+//! }
+//!
+//! // Collect renderers and chains to generate DefaultProgram
+//! gen_program!();
+//! ```
+//!
+// Output:
+//!
+//! ```
+//! > mycmd hello
+//! Hello, World!
+//! > mycmd hallo
+//! Dispatcher not found for command `hallo`
+//! ```
+
// Re-Export Core lib
pub use mingling::*;
pub use mingling_core as mingling;