Macro nar_dev_utils::f_parallel
source · macro_rules! f_parallel { [ // 要被调用的函数(标识符) $($path:ident).+; // 参数的表达式序列 // ! ↓此处必须限制为「+」,不然无法实现「尾后分号」(会引发解析歧义) $( $( $arg:expr $(,)? )+ );* $(;)? ] => { ... }; [ @inner // 要被调用的函数(标识符) $f:tt // 参数的表达式序列的序列 $( [ $($arg:expr,)* ] )* ] => { ... }; [ @inner_expand // 要被调用的函数(标识符) [ $($f:tt)* ] // 参数的表达式序列 [ $($arg:expr,)* ] ] => { ... }; }
Expand description
平行将参数填充进函数
- 📄形式:
f_parallel![add3; 1 2 3; 4 5 6]=>[add3(1, 2, 3), add3(4, 5, 6)]
§Example
use nar_dev_utils::f_parallel;
fn add3(a: i32, b: i32, c: i32) -> i32 {
a + b + c
}
let m = f_parallel![
add3;
1 2 3; // add3(1, 2, 3)
4 5 6; // add3(4, 5, 6)
7, (8) 9; // add3(7, 8, 9) // ! 📌此处使用逗号避免「调用歧义」`7(8)`
];
assert_eq!(m, [6, 15, 24]);