aboutsummaryrefslogtreecommitdiff
path: root/mingling_macros/src/render.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-07-11 14:44:17 +0800
committer魏曹先生 <1992414357@qq.com>2026-07-11 14:44:17 +0800
commitc5736152b0adeef17349265c4b9277ba17b8bcfd (patch)
treea5a5227ef4ca20ec09d1c8cf0655e9f9f33e03b6 /mingling_macros/src/render.rs
parentc08b2d608abe134e37bc4dee7df2113fac968e06 (diff)
feat: require renderers to return RenderResult instead of mutating one
BREAKING CHANGE: The `render` method on `Renderer`, `HelpRequest`, and `ProgramCollect` now returns `RenderResult` instead of taking `&mut RenderResult`. The `r_print!` and `r_println!` macros have been removed in favor of using `std::io::Write` directly on `RenderResult`.
Diffstat (limited to 'mingling_macros/src/render.rs')
-rw-r--r--mingling_macros/src/render.rs56
1 files changed, 0 insertions, 56 deletions
diff --git a/mingling_macros/src/render.rs b/mingling_macros/src/render.rs
deleted file mode 100644
index 10fce7d..0000000
--- a/mingling_macros/src/render.rs
+++ /dev/null
@@ -1,56 +0,0 @@
-use proc_macro::TokenStream;
-use quote::quote;
-use syn::parse::Parser;
-use syn::{Expr, Token};
-
-pub fn r_print(input: TokenStream) -> TokenStream {
- // Parse the input as format arguments
- let parser = syn::punctuated::Punctuated::<Expr, Token![,]>::parse_terminated;
- let format_args = match parser.parse(input) {
- Ok(args) => args,
- Err(e) => return e.to_compile_error().into(),
- };
-
- // Build the format macro call
- let format_call = if format_args.is_empty() {
- quote! { ::std::format!("") }
- } else {
- let args_iter = format_args.iter();
- quote! { ::std::format!(#(#args_iter),*) }
- };
-
- let expanded = quote! {
- {
- let formatted = #format_call;
- ::mingling::RenderResult::print(__renderer_inner_result, &formatted)
- }
- };
-
- expanded.into()
-}
-
-pub fn r_println(input: TokenStream) -> TokenStream {
- // Parse the input as format arguments
- let parser = syn::punctuated::Punctuated::<Expr, Token![,]>::parse_terminated;
- let format_args = match parser.parse(input) {
- Ok(args) => args,
- Err(e) => return e.to_compile_error().into(),
- };
-
- // Build the format macro call
- let format_call = if format_args.is_empty() {
- quote! { ::std::format!("") }
- } else {
- let args_iter = format_args.iter();
- quote! { ::std::format!(#(#args_iter),*) }
- };
-
- let expanded = quote! {
- {
- let formatted = #format_call;
- ::mingling::RenderResult::println(__renderer_inner_result, &formatted)
- }
- };
-
- expanded.into()
-}