diff options
author | Juan Aguilar Santillana <mhpoin@gmail.com> | 2018-12-12 22:30:57 +0100 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2018-12-13 09:32:03 +0100 |
commit | 39e08325c0e0fba75384579427d1c6f7eca8fbc9 (patch) | |
tree | 317b3f5dc122d6c99cf301fb7de8fb88c88c3690 /testing/tests/rust_macro.rs | |
parent | 65b4f6aae7f83df02449f21d857e640911975a36 (diff) | |
download | askama-39e08325c0e0fba75384579427d1c6f7eca8fbc9.tar.gz askama-39e08325c0e0fba75384579427d1c6f7eca8fbc9.tar.bz2 askama-39e08325c0e0fba75384579427d1c6f7eca8fbc9.zip |
fix rust macro arguments
Diffstat (limited to '')
-rw-r--r-- | testing/tests/rust_macro.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/testing/tests/rust_macro.rs b/testing/tests/rust_macro.rs index 8a114f9..b92bbeb 100644 --- a/testing/tests/rust_macro.rs +++ b/testing/tests/rust_macro.rs @@ -15,3 +15,35 @@ fn main() { let template = RustMacrosTemplate {}; assert_eq!("Hello, world!", template.render().unwrap()); } + +macro_rules! call_a_or_b_on_tail { + ((a: $a:expr, b: $b:expr), call a: $($tail:tt)*) => { + $a(stringify!($($tail)*)) + }; + + ((a: $a:expr, b: $b:expr), call b: $($tail:tt)*) => { + $b(stringify!($($tail)*)) + }; + + ($ab:tt, $_skip:tt $($tail:tt)*) => { + call_a_or_b_on_tail!($ab, $($tail)*) + }; +} + +fn compute_len(s: &str) -> usize { + s.len() +} + +fn zero(_s: &str) -> usize { + 0 +} + +#[derive(Template)] +#[template(path = "rust-macro-args.html")] +struct RustMacrosArgTemplate {} + +#[test] +fn args() { + let template = RustMacrosArgTemplate {}; + assert_eq!("0\n91\n99", template.render().unwrap()); +} |