diff options
Diffstat (limited to 'docs/play/sources')
| -rw-r--r-- | docs/play/sources/zh_CN/2-fruit-mgr-expect.md | 104 | ||||
| -rw-r--r-- | docs/play/sources/zh_CN/2-writing.md | 195 | ||||
| -rw-r--r-- | docs/play/sources/zh_CN/2-writing1.md | 208 | ||||
| -rw-r--r-- | docs/play/sources/zh_CN/2-writing2.md | 527 | ||||
| -rw-r--r-- | docs/play/sources/zh_CN/2-writing3.md | 397 | ||||
| -rw-r--r-- | docs/play/sources/zh_CN/_template.md | 15 |
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 +代码 <<<<<<<<<< "提示" +``` + +--- |
