aboutsummaryrefslogtreecommitdiff
path: root/docs/play/sources
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-06-12 19:39:02 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-06-12 19:39:02 +0800
commitd64afc27578ca83aeb7f78b98e2469b995c07171 (patch)
tree3dab30146d74ae9f216f08dd49327c3281660a84 /docs/play/sources
parent93cc9d549c63f65b4fc424c53a7be9d66f00d117 (diff)
Remove Chinese documentation files for initial version
Diffstat (limited to 'docs/play/sources')
-rw-r--r--docs/play/sources/zh_CN/2-fruit-mgr-expect.md104
-rw-r--r--docs/play/sources/zh_CN/2-writing.md195
-rw-r--r--docs/play/sources/zh_CN/2-writing1.md208
-rw-r--r--docs/play/sources/zh_CN/2-writing2.md527
-rw-r--r--docs/play/sources/zh_CN/2-writing3.md397
-rw-r--r--docs/play/sources/zh_CN/_template.md15
6 files changed, 15 insertions, 1431 deletions
diff --git a/docs/play/sources/zh_CN/2-fruit-mgr-expect.md b/docs/play/sources/zh_CN/2-fruit-mgr-expect.md
deleted file mode 100644
index 708dbc7..0000000
--- a/docs/play/sources/zh_CN/2-fruit-mgr-expect.md
+++ /dev/null
@@ -1,104 +0,0 @@
-该命令运行起来应该是这样:
-
-```bash
-~# fruit-mgr <<<<<<<<<< "输入命令"
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager <<<<<<<<<< "输出欢迎词"
-~#
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help <<<<<<<<<< "查看 list 命令的帮助"
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME> <<<<<<<<<< "输出帮助"
-~#
-```
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME>
-~# fruit-mgr list <<<<<<<<<< "输入命令列出水果"
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME>
-~# fruit-mgr list
-Apple
-Banana
-Orange <<<<<<<<<< "输出水果列表"
-~#
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME>
-~# fruit-mgr list
-Apple <<<<<<<<<< "当然,我们可以使用 --filter 来过滤出 Apple"
-Banana
-Orange
-~#
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME>
-~# fruit-mgr list
-Apple
-Banana
-Orange
-~# fruit-mgr list --filter A <<<<<<<<<< "过滤出名字含大写 A 的水果"
-```
-
----
-
-```bash
-~# fruit-mgr
-Welcome to use FruitManager
-~# fruit-mgr list --help
-Description: List all fruits
-Usage: fruit-mgr list --filter <NAME>
-~# fruit-mgr list
-Apple
-Banana
-Orange
-~# fruit-mgr list --filter A
-Apple <<<<<<<<<< "只输出 Apple"
-~#
-```
diff --git a/docs/play/sources/zh_CN/2-writing.md b/docs/play/sources/zh_CN/2-writing.md
deleted file mode 100644
index bdac3b7..0000000
--- a/docs/play/sources/zh_CN/2-writing.md
+++ /dev/null
@@ -1,195 +0,0 @@
-这是 `main.rs` 的默认内容,让我们先删除默认的 `Hello, World!`
-
-```rust
-
-
-fn main() {
- println!("Hello, World!");
-}
-```
-
----
-
-```rust
-
-
-fn main() {
- println!("Hello, World!"); <<<<<<<<<< "删除 Hello, World!"
-}
-```
-
----
-
-```rust
-
-
-fn main() {
- <<<<<<<<<< "删除 Hello, World!"
-}
-```
-
----
-
-接下来,让我们构建基本的 **Mingling** 程序入口
-
-```rust
-
-
-fn main() {
-
-}
-```
-
----
-
-```rust
-<<<<<<<<<< "在此处引入 Mingling 的预导入模块"
-
-fn main() {
-
-}
-```
-
----
-```rust
-use mingling::prelude::*; <<<<<<<<<< "编写"
-
-fn main() {
-
-}
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
-
-}
-
-<<<<<<<<<< "在此处引入 gen_program!() 用于生成 ThisProgram"
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
-
-}
-
-gen_program!(); <<<<<<<<<< "编写"
-```
-
----
-
-
-```rust
-use mingling::prelude::*; <<<<<<<<<< "gen_program!() 由 prelude 提供"
-
-fn main() {
-
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
-
-}
-
-gen_program!(); <<<<<<<<<< "gen_program!() 必须放在根模块的结尾,这是宏展开的限制"
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- <<<<<<<<<< "在此处使用 ThisProgram 创建程序"
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new(); <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
-}
-
-gen_program!(); <<<<<<<<<< "ThisProgram 由 gen_program!() 生成"
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
-
- <<<<<<<<<< "在此处执行程序并退出"
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit(); <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-至此, **Mingling**的基本入口就搭建完成
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
diff --git a/docs/play/sources/zh_CN/2-writing1.md b/docs/play/sources/zh_CN/2-writing1.md
deleted file mode 100644
index e416118..0000000
--- a/docs/play/sources/zh_CN/2-writing1.md
+++ /dev/null
@@ -1,208 +0,0 @@
-我们刚刚创建了基本的入口,现在编写子命令: `list`
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-fn main() {
- let mut program = ThisProgram::new();
- <<<<<<<<<< "所有的资源将在此处注册"
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-<<<<<<<<<< "让我们在此处注册一个分发器,将 list 命令分发到指定的入口"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!( <<<<<<<<<< "编写"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", <<<<<<<<<< "编写命令名称"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList <<<<<<<<<< "编写分发器名称"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList <<<<<<<<<< "编写入口名称"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList); <<<<<<<<<< "这样,list 命令的分发器 CMDList 就被注册了"
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*; <<<<<<<<<< "dispatcher! 宏由 prelude 提供"
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
-
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- <<<<<<<<<< "Ok, 现在在此处为程序添加分发器"
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher( <<<<<<<<<< "使用 with_dispatcher 为程序添加分发器"
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList); <<<<<<<<<< "添加刚创建的分发器 CMDList"
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-至此,`list` 子命令便已被注册到程序
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
diff --git a/docs/play/sources/zh_CN/2-writing2.md b/docs/play/sources/zh_CN/2-writing2.md
deleted file mode 100644
index 4a4d5fb..0000000
--- a/docs/play/sources/zh_CN/2-writing2.md
+++ /dev/null
@@ -1,527 +0,0 @@
-现在让我们为其创建行为注册的 `list` 子命令添加入口行为
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-<<<<<<<<<< "在此处创建链,用于接收 CMDList 传入的 EntryList"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain] <<<<<<<<<< "编写"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list( <<<<<<<<<< "创建函数体"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list(prev: EntryList <<<<<<<<<< "声明接收 EntryList 类型"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {} <<<<<<<<<< "返回 Next,这代表下一个类型"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {} <<<<<<<<<< "Next 是 ChainProcess<ThisProgram> 的别名"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!(); <<<<<<<<<< "Next 由 gen_program!() 生成"
-```
-
----
-
-我们需要一个包装类型用来包装 `handle_entry_list` 的结果
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-<<<<<<<<<< "我们在此处定义一个包装类型"
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits <<<<<<<<<< "使用 pack! 宏快速创建一个包装类型"
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>); <<<<<<<<<< "将 ResultFruits 包装为 Vec<String>"
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*; <<<<<<<<<< "pack! 由 prelude 提供"
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-现在,继续编辑 `handle_entry_list` 的行为
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
-
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- <<<<<<<<<< "在此处硬编码水果列表"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = vec![ <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ]; <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- <<<<<<<<<< "接下来,在此处将 Vec<String> 包装成 ResultFruits 并返回"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits) <<<<<<<<<< "编写"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain] vvvv <<<<<<<<<< "因为没使用 prev 传入的参数,所以将其忽略"
-fn handle_entry_list(prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-gen_program!();
-```
-
----
-
-好的,现在 `EntryList` 的行为便编写完成
-
-```rust
-use mingling::prelude::*;
-
-dispatcher!("list", CMDList => EntryList);
-
-fn main() {
- let mut program = ThisProgram::new();
- program.with_dispatcher(CMDList);
- program.exec_and_exit();
-}
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-gen_program!();
-```
diff --git a/docs/play/sources/zh_CN/2-writing3.md b/docs/play/sources/zh_CN/2-writing3.md
deleted file mode 100644
index 252caab..0000000
--- a/docs/play/sources/zh_CN/2-writing3.md
+++ /dev/null
@@ -1,397 +0,0 @@
-好的,现在开始编写 `ResultFruits` 的渲染器
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-<<<<<<<<<< "我们将在此处编写渲染器代码"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer] <<<<<<<<<< "和 #[chain] 类似,渲染器函数叫 #[renderer]"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits( <<<<<<<<<< "编写函数体"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits <<<<<<<<<< "声明接收 ResultFruits 类型"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {} <<<<<<<<<< "一般情况下,渲染器什么都不用返回"
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- <<<<<<<<<< "接下来在此处编写渲染逻辑"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = <<<<<<<<<< "首先我们先解包 ResultFruits"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = <<<<<<<<<< "pack! 宏会自动为 ResultFruits 实现 AsRef trait"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = result.as_ref(); <<<<<<<<<< "所以此处可以使用 as_ref()"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result; <<<<<<<<<< "当然,deref 也可以解包 ResultFruits"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result;
- for fruit in vec { <<<<<<<<<< "接下来,循环遍历 ResultFruits 中的水果字符串"
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result;
- for fruit in vec {
- <<<<<<<<<< "在循环中打印内容"
- }
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result;
- for fruit in vec {
- r_println!("{}", fruit) <<<<<<<<<< "使用 r_println 在循环中打印内容"
- }
-}
-
-gen_program!();
-```
-
----
-
-```rust
-use mingling::prelude::*; <<<<<<<<<< "r_println! 由 prelude 提供"
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result;
- for fruit in vec {
- r_println!("{}", fruit)
- }
-}
-
-gen_program!();
-```
-
----
-
-至此 `ResultFruits` 的渲染逻辑便已完成
-
-```rust
-use mingling::prelude::*;
-
-pack!(ResultFruits = Vec<String>);
-
-#[chain]
-fn handle_entry_list(_prev: EntryList) -> Next {
- let fruits = vec![
- "Apple".to_string(),
- "Banana".to_string(),
- "Orange".to_string(),
- ];
- ResultFruits::new(fruits)
-}
-
-#[renderer]
-fn render_fruits(result: ResultFruits) {
- let vec: &Vec<String> = &*result;
- for fruit in vec {
- r_println!("{}", fruit)
- }
-}
-
-gen_program!();
-```
diff --git a/docs/play/sources/zh_CN/_template.md b/docs/play/sources/zh_CN/_template.md
new file mode 100644
index 0000000..29fed62
--- /dev/null
+++ b/docs/play/sources/zh_CN/_template.md
@@ -0,0 +1,15 @@
+消息
+
+```bash
+代码 <<<<<<<<<< "提示"
+```
+
+---
+
+消息2
+
+```bash
+代码 <<<<<<<<<< "提示"
+```
+
+---