-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvec_ext.rs
More file actions
36 lines (35 loc) · 919 Bytes
/
vec_ext.rs
File metadata and controls
36 lines (35 loc) · 919 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#[macro_export]
macro_rules! vec_ext_append {
{$vec:expr, [$(
$(@if ($if_cond:expr) $if_body:block)?
$(@for ($for_pat:pat in $for_val:expr) $for_body:block)?
$(@if let ($if_let_pat:pat = $if_let_val:expr) $if_let_body:block)?
$(@append($append:expr))?
$(@extend($extend:expr))?
$($val:expr)?
),*]} => {{$(
$(if $if_cond {
$vec.push($if_body);
})?
$(for $for_pat in $for_val {
$vec.push($for_body);
})?
$(if let $if_let_pat = $if_let_val {
$vec.push($if_let_body);
})?
$($vec.append($append);)?
$($vec.extend($extend);)?
$($vec.push($val);)?
)*}};
}
#[macro_export]
macro_rules! vec_ext {
[$($inner:tt)+] => {{
let mut v = Vec::new();
$crate::vec_ext_append! {
v,
[$($inner)+]
}
v
}};
}