Website Summary Files Commits Branches @commit @diff @stats
path: root / zkvms_host_io / input_macros / src
diff options
context:
space:
mode:
Commit600b7efa6d8a8f23a86de786cf7de79b4f8c5d0e (patch)
Author
 Kamen Mladenov <kamen@syndamia.com>
2025-02-03 12:08:47 +0200
Committer
 Kamen Mladenov <kamen@syndamia.com>
2025-02-03 12:08:47 +0200
Files1148fb0c45343122bd57f88230e16db810213b82 /zkvms_host_io/input_macros/src
zkVMs-benchmarks-600b7efa6d8a8f23a86de786cf7de79b4f8c5d0e.tar
zkVMs-benchmarks-600b7efa6d8a8f23a86de786cf7de79b4f8c5d0e.tar.gz
zkVMs-benchmarks-600b7efa6d8a8f23a86de786cf7de79b4f8c5d0e.zip
Parent0004e5127eb7d919b3db08b3f24c4b79843f69d6 (diff)
feat(zkvms_host_io): Make Output type contain public inputs
1 files changed, 16 insertions, 1 deletions
-rw-r--r--zkvms_host_io/input_macros/src/lib.rs17
diff --git a/zkvms_host_io/input_macros/src/lib.rs b/zkvms_host_io/input_macros/src/lib.rs
index f313a1e..5184192 100644
--- a/zkvms_host_io/input_macros/src/lib.rs
+++ b/zkvms_host_io/input_macros/src/lib.rs
@@ -14,7 +14,22 @@ fn get_types() -> (TokenStream, TokenStream) {
#[proc_macro]
pub fn generate_output_type_input_struct(_: TokenStream) -> TokenStream {
let (args, ret) = get_types();
- let output_type = format!("pub type Output = {};", ret).to_string();
+ let (patterns, types) = args_divide(&args);
+
+ let mut patterns = patterns
+ .iter()
+ .map(|x| x.to_string());
+ let public_inputs = toml::from_str::<toml::Table>(
+ include_str!(concat!(env!("INPUTS_DIR"), "/default_public_input.toml"))
+ )
+ .unwrap();
+ let mut commitment = String::new();
+ for input in public_inputs.keys() {
+ if let Some(index) = patterns.clone().position(|x| x == *input) {
+ commitment += &format!("{}, ", types[index]);
+ }
+ }
+ let output_type = format!("pub type Output = ({} {});", commitment, ret).to_string();
let all_args = args_split(&args);