Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.75 KB | None | 0 0
  1. macro_rules! spread {
  2. (@inner $vec:ident) => { $vec };
  3. (@inner $vec:ident ...$item:expr) => {{
  4. $vec.extend($item.iter());
  5. $vec
  6. }};
  7. (@inner $vec:ident ...$item:expr, $($rest:tt)*) => {{
  8. $vec.extend($item.iter());
  9. spread![@inner $vec $($rest)*]
  10. }};
  11. (@inner $vec:ident $item:expr) => {{
  12. $vec.push($item);
  13. $vec
  14. }};
  15. (@inner $vec:ident $item:expr, $($rest:tt)*) => {{
  16. $vec.push($item);
  17. spread![@inner $vec $($rest)*]
  18. }};
  19. ($($rest:tt)*) => {{
  20. let mut items = Vec::new();
  21. spread![@inner items $($rest)*]
  22. }};
  23. }
  24.  
  25. fn main() {
  26. let a = [1, 2, 3];
  27. let b = [6, 7, 8];
  28. let items = spread![0, ...a, 4, 5, ...b, 9];
  29. println!("{:?}", items);
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement