#[macro_export]
macro_rules! get_some
{
($option_name:ident) =>
{
{
let res = $option_name.take();
res.expect("Error: Nothing here!")
}
};
($option_name1:ident, $option_name2:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
(res1, res2)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
(res1, res2, res3)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident, $option_name4:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
let res4 = get_some!($option_name4);
(res1, res2, res3, res4)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident, $option_name4:ident, $option_name5:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
let res4 = get_some!($option_name4);
let res5 = get_some!($option_name5);
(res1, res2, res3, res4, res5)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident, $option_name4:ident, $option_name5:ident, $option_name6:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
let res4 = get_some!($option_name4);
let res5 = get_some!($option_name5);
let res6 = get_some!($option_name6);
(res1, res2, res3, res4, res5, res6)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident, $option_name4:ident, $option_name5:ident, $option_name6:ident, $option_name7:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
let res4 = get_some!($option_name4);
let res5 = get_some!($option_name5);
let res6 = get_some!($option_name6);
let res7 = get_some!($option_name7);
(res1, res2, res3, res4, res5, res6, res7)
}
};
($option_name1:ident, $option_name2:ident, $option_name3:ident, $option_name4:ident, $option_name5:ident, $option_name6:ident, $option_name7:ident, $option_name8:ident) =>
{
{
let res1 = get_some!($option_name1);
let res2 = get_some!($option_name2);
let res3 = get_some!($option_name3);
let res4 = get_some!($option_name4);
let res5 = get_some!($option_name5);
let res6 = get_some!($option_name6);
let res7 = get_some!($option_name7);
let res8 = get_some!($option_name8);
(res1, res2, res3, res4, res5, res6, res7, res8)
}
}
}