diff options
Diffstat (limited to 'mingling/src')
| -rw-r--r-- | mingling/src/example_docs.rs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/mingling/src/example_docs.rs b/mingling/src/example_docs.rs index 31a298f..519c5cc 100644 --- a/mingling/src/example_docs.rs +++ b/mingling/src/example_docs.rs @@ -65,6 +65,75 @@ /// gen_program!(); /// ``` pub mod example_basic {} +/// `Mingling` Example - Async +/// +/// After enabling the `async` feature: +/// 1. The `chain!` macro will support using **async** functions, +/// 2. The `exec` function of `Program` will return a `Future` for you to use with an async runtime +/// +/// ## Enable Feature +/// Enable the `async` feature for mingling in `Cargo.toml` +/// ```toml +/// [dependencies] +/// mingling = { version = "...", features = ["async"] } +/// ``` +/// +/// # How to Run +/// ```bash +/// cargo run --manifest-path ./examples/example-async/Cargo.toml -- hello World +/// ``` +/// +/// Cargo.toml +/// ```ignore +/// [package] +/// name = "example-async" +/// version = "0.0.1" +/// edition = "2024" +/// +/// [dependencies] +/// tokio = { version = "1", features = ["full"] } +/// mingling = { path = "../../mingling", features = ["async"] } +/// ``` +/// +/// main.rs +/// ```ignore +/// use mingling::{ +/// macros::{chain, dispatcher, gen_program, pack, r_println, renderer}, +/// marker::NextProcess, +/// }; +/// +/// dispatcher!("hello", HelloCommand => HelloEntry); +/// +/// // Use Tokio async runtime +/// #[tokio::main] +/// async fn main() { +/// let mut program = ThisProgram::new(); +/// program.with_dispatcher(HelloCommand); +/// +/// // Run program +/// program.exec().await; +/// } +/// +/// pack!(Hello = String); +/// +/// // You can freely use async / non-async functions to declare your Chain +/// +/// #[chain] +/// // fn parse_name(prev: HelloEntry) -> NextProcess { +/// async fn parse_name(prev: HelloEntry) -> NextProcess { +/// let name = prev.first().cloned().unwrap_or_else(|| "World".to_string()); +/// Hello::new(name).to_render() +/// } +/// +/// // For renderers, you can still only use synchronous functions +/// #[renderer] +/// fn render_hello_who(prev: Hello) { +/// r_println!("Hello, {}!", *prev); +/// } +/// +/// gen_program!(); +/// ``` +pub mod example_async {} /// `Mingling` Example - Completion /// /// # How to Deploy |
