#tuple #macro #arceos #iterator

macro tuple_for_each

Provides macros and methods to iterate over the fields of a tuple struct

1 unstable release

0.1.0 Jul 17, 2024

#407 in Procedural macros

28 downloads per month

GPL-3.0-or-later OR Apache-2…

8KB
118 lines

tuple_for_each

crates.io Docs.rs CI

Provides macros and methods to iterate over the fields of a tuple struct.

Added methods:

  • is_empty() -> bool: Whether the tuple has no field.
  • len() -> usize: Number of items in the tuple.

Generated macros:

  • <tuple_name>_for_each!(x in tuple { ... })
  • <tuple_name>_enumerate!((i, x) in tuple { ... })

Examples

use tuple_for_each::TupleForEach;

#[derive(TupleForEach)]
struct FooBar(u32, &'static str, bool);

let tup = FooBar(23, "hello", true);
assert!(!tup.is_empty());
assert_eq!(tup.len(), 3);

// prints "23", "hello", "true" line by line
foo_bar_for_each!(x in tup {
    println!("{}", x);
});

// prints "0: 23", "1: hello", "2: true" line by line
foo_bar_enumerate!((i, x) in tup {
    println!("{}: {}", i, x);
});

Dependencies

~225–670KB
~16K SLoC