diff options
author | Jesse Luehrs <doy@tozt.net> | 2018-02-27 02:24:07 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2018-02-27 02:59:19 -0500 |
commit | bea8eb55cb26db5dc50958665668759716ff6830 (patch) | |
tree | b6b46eab2168b2d6a711d3d950c8e045a300e8a4 /src/verbose.rs | |
parent | c5e2fb1787686e4e202d64685b2792c83978ad0b (diff) | |
download | fancy-prompt-bea8eb55cb26db5dc50958665668759716ff6830.tar.gz fancy-prompt-bea8eb55cb26db5dc50958665668759716ff6830.zip |
clean up the verbose output process
Diffstat (limited to 'src/verbose.rs')
-rw-r--r-- | src/verbose.rs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/src/verbose.rs b/src/verbose.rs new file mode 100644 index 0000000..8f23c03 --- /dev/null +++ b/src/verbose.rs @@ -0,0 +1,76 @@ +#[cfg(feature = "verbose")] +use std; + +#[cfg(feature = "verbose")] +pub static mut STACK: Option<Vec<(String, std::time::Instant, std::time::Instant)>> = None; + +#[cfg(feature = "verbose")] +macro_rules! start_talking_about_time { + ($category:expr) => ( + use std; + use verbose; + unsafe { + let stack = verbose::STACK.get_or_insert_with(|| Vec::new()); + let len = stack.len(); + let now = std::time::Instant::now(); + let category = $category; + stack.push((String::from(category), now.clone(), now.clone())); + eprintln!("{}starting {}", " ".repeat(len), category); + } + ) +} + +#[cfg(feature = "verbose")] +macro_rules! talk_about_time { + ($what:expr) => ( + unsafe { + let stack = verbose::STACK.get_or_insert_with(|| Vec::new()); + let len = stack.len(); + let last = stack.last_mut().unwrap(); + let elapsed = last.1.elapsed(); + eprintln!( + "{}{}: {} took {}.{:09}s", + " ".repeat(len), + last.0, + $what, + elapsed.as_secs(), + elapsed.subsec_nanos() + ); + last.1 = std::time::Instant::now(); + } + ) +} + +#[cfg(feature = "verbose")] +macro_rules! stop_talking_about_time { + () => ( + unsafe { + let stack = verbose::STACK.get_or_insert_with(|| Vec::new()); + let last = stack.pop().unwrap(); + let elapsed = last.2.elapsed(); + let len = stack.len(); + eprintln!( + "{}ending {} (total {}.{:09}s)", + " ".repeat(len), + last.0, + elapsed.as_secs(), + elapsed.subsec_nanos() + ); + } + ) +} + +#[cfg(not(feature = "verbose"))] +macro_rules! start_talking_about_time { + ($e:expr) => () +} + +#[cfg(not(feature = "verbose"))] +macro_rules! talk_about_time { + ($e:expr) => () +} + +#[cfg(not(feature = "verbose"))] +macro_rules! stop_talking_about_time { + () => () +} |