forked from M-Labs/libfringe
30 lines
649 B
Rust
30 lines
649 B
Rust
macro_rules! __into_fields {
|
|
($x:ident { $field:ident } <- $iter:ident) => {
|
|
match $iter.next() {
|
|
Some(value) => {
|
|
$x.$field = value;
|
|
Some($iter)
|
|
}
|
|
None => None
|
|
}
|
|
};
|
|
($x:ident { $field:ident, $($fields_rest:ident),* } <- $iter:ident) => {
|
|
match $iter.next() {
|
|
Some(value) => {
|
|
$x.$field = value;
|
|
__into_fields!($x { $($fields_rest),* } <- $iter)
|
|
}
|
|
None => None
|
|
}
|
|
};
|
|
}
|
|
|
|
macro_rules! into_fields {
|
|
($x:ident { $($fields_rest:ident),* } <- $iter:expr) => {
|
|
{
|
|
let mut iter = $iter;
|
|
__into_fields!($x { $($fields_rest),* } <- iter)
|
|
}
|
|
}
|
|
}
|