aboutsummaryrefslogtreecommitdiff
path: root/examples/example-setup
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-05-23 23:41:04 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-05-23 23:49:34 +0800
commit0a2ef958c0dca21d19e4ffc38ba5a7c4078e182a (patch)
treec82fc4242ed393b132ba514eb434d722e7d9c387 /examples/example-setup
parentccab1940c019dfbfb7dfcbbe4cb927258933755f (diff)
Rework examples and add entry macro for testing
Diffstat (limited to 'examples/example-setup')
-rw-r--r--examples/example-setup/Cargo.lock76
-rw-r--r--examples/example-setup/Cargo.toml7
-rw-r--r--examples/example-setup/src/main.rs33
3 files changed, 116 insertions, 0 deletions
diff --git a/examples/example-setup/Cargo.lock b/examples/example-setup/Cargo.lock
new file mode 100644
index 0000000..6b8f0d4
--- /dev/null
+++ b/examples/example-setup/Cargo.lock
@@ -0,0 +1,76 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "example-setup"
+version = "0.1.0"
+dependencies = [
+ "mingling",
+]
+
+[[package]]
+name = "just_fmt"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5454cda0d57db59778608d7a47bff5b16c6705598265869fb052b657f66cf05e"
+
+[[package]]
+name = "mingling"
+version = "0.1.9"
+dependencies = [
+ "mingling_core",
+ "mingling_macros",
+]
+
+[[package]]
+name = "mingling_core"
+version = "0.1.9"
+dependencies = [
+ "just_fmt",
+]
+
+[[package]]
+name = "mingling_macros"
+version = "0.1.9"
+dependencies = [
+ "just_fmt",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.117"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
diff --git a/examples/example-setup/Cargo.toml b/examples/example-setup/Cargo.toml
new file mode 100644
index 0000000..12364aa
--- /dev/null
+++ b/examples/example-setup/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "example-setup"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+mingling = { path = "../../mingling" }
diff --git a/examples/example-setup/src/main.rs b/examples/example-setup/src/main.rs
new file mode 100644
index 0000000..c445276
--- /dev/null
+++ b/examples/example-setup/src/main.rs
@@ -0,0 +1,33 @@
+//! Example Setup
+//!
+//! > This example demonstrates how to build a custom Setup for modular management of project components
+
+use mingling::{Program, macros::program_setup, prelude::*};
+
+fn main() {
+ let mut program = ThisProgram::new();
+
+ // --------- IMPORTANT ---------
+ // Introduce `CustomSetup` generated by `custom_setup`
+ program.with_setup(CustomSetup);
+ // --------- IMPORTANT ---------
+
+ program.exec_and_exit();
+}
+
+// --------- IMPORTANT ---------
+// Define `CustomSetup` (inferred from `custom_setup`)
+// Package part of the program construction logic into this type for modular management
+#[program_setup]
+fn custom_setup(program: &mut Program<ThisProgram>) {
+ program.with_dispatchers((CMD1, CMD2, CMD3, CMD4, CMD5));
+}
+// --------- IMPORTANT ---------
+
+dispatcher!("1", CMD1 => Entry1);
+dispatcher!("2", CMD2 => Entry2);
+dispatcher!("3", CMD3 => Entry3);
+dispatcher!("4", CMD4 => Entry4);
+dispatcher!("5", CMD5 => Entry5);
+
+gen_program!();