summaryrefslogtreecommitdiffstats
path: root/src/util.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-11-13 04:31:50 -0500
committerJesse Luehrs <doy@tozt.net>2021-11-13 04:31:50 -0500
commit153d4c4161fa8fba350dcc51ab14b08635c53e99 (patch)
tree1c587518bf112e27286f7f3e76274c980dc31856 /src/util.rs
parent7c0da0cd97536a9c412d91524971f00af87d1bdc (diff)
downloadnbsh-153d4c4161fa8fba350dcc51ab14b08635c53e99.tar.gz
nbsh-153d4c4161fa8fba350dcc51ab14b08635c53e99.zip
track timing information for commands
Diffstat (limited to 'src/util.rs')
-rw-r--r--src/util.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/util.rs b/src/util.rs
index d792b91..649888c 100644
--- a/src/util.rs
+++ b/src/util.rs
@@ -3,3 +3,21 @@ pub type Mutex<T> = async_std::sync::Arc<async_std::sync::Mutex<T>>;
pub fn mutex<T>(t: T) -> Mutex<T> {
async_std::sync::Arc::new(async_std::sync::Mutex::new(t))
}
+
+pub fn format_duration(dur: std::time::Duration) -> String {
+ let secs = dur.as_secs();
+ let nanos = dur.subsec_nanos();
+ if secs > 60 {
+ let mins = secs / 60;
+ let secs = secs - mins * 60;
+ format!("{}m{}s", mins, secs)
+ } else if secs > 0 {
+ format!("{}.{:03}s", secs, nanos / 1_000_000)
+ } else if nanos >= 1_000_000 {
+ format!("{}ms", nanos / 1_000_000)
+ } else if nanos >= 1_000 {
+ format!("{}us", nanos / 1_000)
+ } else {
+ format!("{}ns", nanos)
+ }
+}