aboutsummaryrefslogtreecommitdiff
path: root/docs/pages/other
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-17 03:27:46 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-17 03:27:46 +0800
commitc23c590330af83afb6e146bcd9b0a274b3689d22 (patch)
tree34599cf2737ce4de22653c9ccae2d60a38a15842 /docs/pages/other
parent6980fbf2f9fb4c599d8dc6ff549a8b3288eb24e9 (diff)
refactor!: remove Node type and simplify dispatcher macro syntax
The `dispatcher!` macro no longer requires a `CMD*` dispatcher type argument; the dispatcher struct is now generated internally as `__Dispatcher{Pascal}`. The `Node` type, `node!` macro, and `Dispatcher::node()` / `clone_dispatcher()` methods are removed.
Diffstat (limited to 'docs/pages/other')
-rw-r--r--docs/pages/other/features.md2
-rw-r--r--docs/pages/other/naming_rule.md28
2 files changed, 14 insertions, 16 deletions
diff --git a/docs/pages/other/features.md b/docs/pages/other/features.md
index 7615118..4552d30 100644
--- a/docs/pages/other/features.md
+++ b/docs/pages/other/features.md
@@ -158,7 +158,7 @@ For example, allows the shorthand form `dispatcher!("greet")`, which auto-genera
| `group!(Type)` | Register external types as group members without modifying them |
| `pack_err!(ErrorType)` / `pack_err!(ErrorType = Inner)` | Create error types with an automatic `name` field |
| `#[program_setup]` | Declare a program initialization function |
-| `dispatcher!("cmd.path")` **shorthand** | Omit `CMDStruct => EntryStruct`, names are auto-derived |
+| `dispatcher!("cmd.path")` **shorthand** | Omit `EntryStruct`, the entry name is auto-derived |
<details>
<summary> Details </summary>
diff --git a/docs/pages/other/naming_rule.md b/docs/pages/other/naming_rule.md
index 1175ae0..770fd10 100644
--- a/docs/pages/other/naming_rule.md
+++ b/docs/pages/other/naming_rule.md
@@ -40,19 +40,17 @@ Name + Setup
### Dispatcher
-Dispatchers are the entry points of commands, corresponding one-to-one with `Node` names. Node names use `.` to separate levels, dispatcher names use the `CMD` prefix with PascalCase.
+Dispatchers are the entry points of commands. The command name uses `.` to separate hierarchy levels and matches the arguments typed by the user.
```
-CMD + Command Hierarchy
+command name
```
-| Node | Dispatcher |
-| ------------ | ----------------- |
-| `greet` | `CMDGreet` |
-| `remote.add` | `CMDRemoteAdd` |
-| `remote.rm` | `CMDRemoteRemove` |
-
-Even if a node is an abbreviation, the dispatcher name should use the full name. For example, the node is `remote.rm`, but the dispatcher is `CMDRemoteRemove`, not `CMDRemoteRm`.
+| Command |
+| ------------ |
+| `greet` |
+| `remote.add` |
+| `remote.rm` |
### Entry
@@ -62,11 +60,11 @@ Entries are the pipeline starting types created by dispatchers, wrapping `Vec<St
Entry + Command Hierarchy
```
-| Dispatcher | Entry |
-| ----------------- | ------------------- |
-| `CMDGreet` | `EntryGreet` |
-| `CMDRemoteAdd` | `EntryRemoteAdd` |
-| `CMDRemoteRemove` | `EntryRemoteRemove` |
+| Command | Entry |
+| ------------ | ------------------- |
+| `greet` | `EntryGreet` |
+| `remote.add` | `EntryRemoteAdd` |
+| `remote.rm` | `EntryRemoteRemove` |
### State
@@ -174,7 +172,7 @@ fn handle_remote_add(args: EntryRemoteAdd, cwd: &ResCurrentDir, db: &mut ResData
@@@ pack!(ResultRemoteAdded = String);
@@@ pack!(ErrorRepositoryNotFound = String);
// Dispatcher
-dispatcher!("remote.add", CMDRemoteAdd => EntryRemoteAdd);
+dispatcher!("remote.add", EntryRemoteAdd);
// Entry → State
#[chain]