seq!

github crates.io docs.rs build status

A seq! macro to repeat a fragment of source code and substitute into each repetition a sequential numeric counter.

toml [dependencies] seq-macro = "0.2"

```rust

![feature(procmacronon_items)]

use seq_macro::seq;

fn main() { let tuple = (1000, 100, 10); let mut sum = 0;

// Expands to:
//
//     sum += tuple.0;
//     sum += tuple.1;
//     sum += tuple.2;
//
// This cannot be written using an ordinary for-loop because elements of
// a tuple can only be accessed by their integer literal index, not by a
// variable.
seq!(N in 0..=2 {
    sum += tuple.N;
});

assert_eq!(sum, 1110);

} ```

```rust use seq_macro::seq;

seq!(N in 64..=127 { #[derive(Debug)] enum Demo { // Expands to Variant64, Variant65, ... #( Variant#N, )* } });

fn main() { assert_eq!("Variant99", format!("{:?}", Demo::Variant99)); } ```

```rust use seq_macro::seq;

seq!(P in 0x000..=0x00F { // expands to structs Pin000, ..., Pin009, Pin00A, ..., Pin00F struct Pin#P; }); ```


License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.