Skip to main content

nickel_lang_parser/
metrics.rs

1//! This module only contains macros wrapping those of the `metrics` crate, if
2//! the `metrics` feature is enabled.
3
4#[cfg(feature = "metrics")]
5#[macro_export]
6macro_rules! increment {
7    ( $counter:expr ) => {
8        $crate::metrics::increment!($counter, 1)
9    };
10    ( $counter:expr, $count:expr ) => {
11        ::metrics::counter!($counter).increment($count)
12    };
13}
14
15#[cfg(not(feature = "metrics"))]
16#[macro_export]
17macro_rules! increment {
18    ( $( $args:expr ),+ ) => {};
19}
20
21#[cfg(feature = "metrics")]
22#[macro_export]
23macro_rules! sample {
24    ( $counter:expr, $value:expr ) => {
25        ::metrics::histogram!($counter).record($value)
26    };
27}
28
29#[cfg(not(feature = "metrics"))]
30#[macro_export]
31macro_rules! sample {
32    ( $( $args:expr ),+ ) => {};
33}
34
35#[cfg(feature = "metrics")]
36#[macro_export]
37macro_rules! measure_runtime {
38    ( $counter:expr, $expr:expr ) => {{
39        let start_time = ::std::time::Instant::now();
40        let result = $expr;
41        let duration = start_time.elapsed();
42        ::metrics::counter!($counter).increment(duration.as_millis() as u64);
43        result
44    }};
45}
46
47#[cfg(not(feature = "metrics"))]
48#[macro_export]
49macro_rules! measure_runtime {
50    ( $counter: expr, $expr: expr ) => {
51        $expr
52    };
53}
54
55pub use increment;
56pub use measure_runtime;
57pub use sample;