aboutsummaryrefslogtreecommitdiff
path: root/examples/example-general-renderer/src
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-general-renderer/src
parentccab1940c019dfbfb7dfcbbe4cb927258933755f (diff)
Rework examples and add entry macro for testing
Diffstat (limited to 'examples/example-general-renderer/src')
-rw-r--r--examples/example-general-renderer/src/main.rs45
1 files changed, 21 insertions, 24 deletions
diff --git a/examples/example-general-renderer/src/main.rs b/examples/example-general-renderer/src/main.rs
index 64d8d00..5f74815 100644
--- a/examples/example-general-renderer/src/main.rs
+++ b/examples/example-general-renderer/src/main.rs
@@ -1,30 +1,15 @@
-//! `Mingling` Example - General Renderer
+//! Example General Renderer
//!
-//! ## Step1 - Enable Feature
-//! Enable the `general_renderer` feature for mingling in `Cargo.toml`
-//! ```toml
-//! [dependencies]
-//! mingling = { version = "...", features = ["general_renderer", "parser"] }
-//! ```
-//!
-//! ## Step2 - Add Dependencies
-//! Add `serde` dependency to `Cargo.toml` for serialization support
-//! ```toml
-//! [dependencies]
-//! serde = { version = "1", features = ["derive"] }
-//! ```
+//! > This example demonstrates how to use the `general_renderer` feature to render data into structures such as json / yaml
//!
-//! ## Step3 - Write Code
-//! Write the following content into `main.rs`
-//!
-//! ## Step4 - Build and Run
+//! Run
//! ```bash
-//! cargo run --manifest-path ./examples/example-general-renderer/Cargo.toml -- render Bob 22
-//! cargo run --manifest-path ./examples/example-general-renderer/Cargo.toml -- render Bob 22 --json
-//! cargo run --manifest-path ./examples/example-general-renderer/Cargo.toml -- render Bob 22 --yaml
+//! cargo run --manifest-path examples/example-general-renderer/Cargo.toml --quiet -- render Bob 22
+//! cargo run --manifest-path examples/example-general-renderer/Cargo.toml --quiet -- render Bob 22 --json
+//! cargo run --manifest-path examples/example-general-renderer/Cargo.toml --quiet -- render Bob 22 --yaml
//! ```
//!
-//! Will print:
+//! Output:
//! ```plain
//! Bob is 22 years old
//! {"member_name":"Bob","member_age":22}
@@ -33,7 +18,7 @@
//! ```
use mingling::prelude::*;
-use mingling::{parser::Picker, setup::GeneralRendererSetup, Groupped};
+use mingling::{Groupped, parser::Picker, setup::GeneralRendererSetup};
use serde::Serialize;
dispatcher!("render", RenderCommand => RenderCommandEntry);
@@ -46,7 +31,13 @@ fn main() {
program.exec();
}
-// Manually implement Info struct
+// --------- IMPORTANT ---------
+// For beautiful output structure, do not use `pack!` to wrap the types that need to be output.
+// Instead, manually implement
+// ____________________ Implement serde::Serialize
+// / _________ Implement mingling::Groupped
+// | / to ensure Mingling can recognize the type
+// vvvvvvvvv vvvvvvvv
#[derive(Serialize, Groupped)]
struct Info {
#[serde(rename = "member_name")]
@@ -54,6 +45,12 @@ struct Info {
#[serde(rename = "member_age")]
age: i32,
}
+// This will output: {"member_name":"name","member_age":32} structure
+
+// If using pack!(Info = (String, i32));
+// Output: {"inner":["name", 32]}
+
+// --------- IMPORTANT ---------
#[chain]
fn parse_render(prev: RenderCommandEntry) -> Next {