diff options
| author | Kamen Mladenov <kamen@syndamia.com> | 2025-01-22 11:53:08 +0200 |
|---|---|---|
| committer | Kamen Mladenov <kamen@syndamia.com> | 2025-01-22 11:53:08 +0200 |
| commit | a82b39d1001fb6cb8d6e1cc824028aa08c7ed6de (patch) | |
| tree | af3beeecf7505ec9934563c0246ab549d3808d99 /guests_macro/src | |
| parent | b0608ca2c0d8f739bead99eb93adc520ce2e1df1 (diff) | |
| download | zkVMs-benchmarks-a82b39d1001fb6cb8d6e1cc824028aa08c7ed6de.tar zkVMs-benchmarks-a82b39d1001fb6cb8d6e1cc824028aa08c7ed6de.tar.gz zkVMs-benchmarks-a82b39d1001fb6cb8d6e1cc824028aa08c7ed6de.zip | |
feat(guests_macro): Implement args_divide_grouped
Use it in multiple zkVMs, simplifying codebase
Diffstat (limited to 'guests_macro/src')
| -rw-r--r-- | guests_macro/src/parse_fn.rs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/guests_macro/src/parse_fn.rs b/guests_macro/src/parse_fn.rs index 506b26a..0e5712b 100644 --- a/guests_macro/src/parse_fn.rs +++ b/guests_macro/src/parse_fn.rs @@ -45,7 +45,7 @@ pub fn split_fn(item: &TokenStream) -> (TokenStream, TokenStream, TokenStream) { } /// Input: "(p1 : t1, p2: t2, ...)" -/// Output: "p1 : t1", "p2: t2", ... +/// Output: vec!["p1 : t1", "p2: t2", ...] pub fn args_split(item: &TokenStream) -> Vec<TokenStream> { let contents; if let TokenTree::Group(group) = item.clone().into_iter().next().unwrap() { @@ -78,8 +78,8 @@ pub fn args_split(item: &TokenStream) -> Vec<TokenStream> { args } -/// Input: (p1 : t1, p2: t2, ...) -/// Output: (p1, p2, ...), (t1, t2, ...) +/// Input: "(p1 : t1, p2: t2, ...)" +/// Output: vec![p1, p2, ...], vec![t1, t2, ...] pub fn args_divide(item: &TokenStream) -> (Vec<TokenStream>, Vec<TokenStream>) { let contents; if let TokenTree::Group(group) = item.clone().into_iter().next().unwrap() { @@ -129,7 +129,14 @@ pub fn args_divide(item: &TokenStream) -> (Vec<TokenStream>, Vec<TokenStream>) { (patterns, types) } -/// Input: "p1 p2 ..." +/// Input: "(p1 : t1, p2: t2, ...)" +/// Output: "(p1, p2, ...)", "(t1, t2, ...)" +pub fn args_divide_grouped(item: &TokenStream) -> (TokenStream, TokenStream) { + let (patterns, types) = args_divide(&item); + (group_streams(&patterns), group_streams(&types)) +} + +/// Input: vec![p1, p2, ...] /// Output: "(p1, p2, ...)" pub fn group_streams(patterns: &Vec<TokenStream>) -> TokenStream { let mut inner_ts = TokenStream::new(); |
