2 unstable releases

0.2.0 Apr 2, 2023
0.1.0 May 17, 2022

#2103 in Procedural macros

Download history 32/week @ 2024-07-20 55/week @ 2024-07-27 79/week @ 2024-08-03 89/week @ 2024-08-10 18/week @ 2024-08-17 18/week @ 2024-08-24 22/week @ 2024-08-31 38/week @ 2024-09-07 54/week @ 2024-09-14 125/week @ 2024-09-21 34/week @ 2024-09-28 45/week @ 2024-10-05 126/week @ 2024-10-12 72/week @ 2024-10-19 58/week @ 2024-10-26 104/week @ 2024-11-02

367 downloads per month

MIT/Apache

8KB
80 lines

Counting Macros

This library adds macro to get compile time counters. It uses procedural macros to implement state between macro invocations.

There are a few places this may be useful. Perhaps if you were defining a series of constant variables that you needed to increment for each variable. Of course in that situation it may make more sense to just build those values at runtime or using some kind of build script.

Example

use counting_macros::*;

counter_create!(counter);
let nums = [counter_incr!(counter), counter_incr!(counter),
    counter_incr!(counter)];
assert_eq!(nums, [0, 1, 2]);

counter_set!(counter, -5);
let nums = [counter_incr!(counter), counter_peek!(counter),
    counter_incr!(counter)];
assert_eq!(nums, [-5, -4, -4]);

counter_next!(counter);
assert_eq!(counter_peek!(counter), -2);

Warning

I'm not certain about the stability or safety of this, so I would not recomend this for use in serious projects.

Additionally there is currently there is no error handling beyond unwraps.


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.

Dependencies

~230–670KB
~16K SLoC