From 0a2ef958c0dca21d19e4ffc38ba5a7c4078e182a Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Sat, 23 May 2026 23:41:04 +0800 Subject: Rework examples and add entry macro for testing --- examples/example-general-renderer/src/main.rs | 45 +++++++++++++-------------- 1 file changed, 21 insertions(+), 24 deletions(-) (limited to 'examples/example-general-renderer/src') 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 { -- cgit