From 17bcac02e208f1e6da33900410538f15d7436f25 Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Tue, 28 Jan 2025 13:18:39 +0200 Subject: feat(zkvms_host_io/input_macros): Implement forach_input_field macro --- zkvms_host_io/input_macros/src/lib.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/zkvms_host_io/input_macros/src/lib.rs b/zkvms_host_io/input_macros/src/lib.rs index 51fd613..2585653 100644 --- a/zkvms_host_io/input_macros/src/lib.rs +++ b/zkvms_host_io/input_macros/src/lib.rs @@ -34,3 +34,16 @@ pub fn generate_input_struct(_: TokenStream) -> TokenStream { struct_def.parse::().unwrap() } + +#[proc_macro] +pub fn foreach_input_field(item: TokenStream) -> TokenStream { + let arg_patterns = args_divide(&get_args()).0; + + let expr = format!("{}", item); + let mut out = String::new(); + for field in arg_patterns { + // Unquoted yield is a keyword, so it is not allowed as field name + out += &expr.replace(".yield", &format!(".{field}")); + } + out.parse::().unwrap() +} -- cgit v1.2.3