orbtk_orbclient 0.3.1-alpha4

Window shell crate used by OrbTk.
//! This module provides native OS implementations.

use std::{collections::HashMap, sync::Mutex, time::Instant};

lazy_static! {
    pub static ref CONSOLE: Console = Console {
        instants: Mutex::new(HashMap::new())
    };
}

pub struct Console {
    instants: Mutex<HashMap<String, Instant>>,
}

impl Console {
    pub fn time(&self, name: impl Into<String>) {
        self.instants
            .lock()
            .unwrap()
            .insert(name.into(), Instant::now());
    }

    pub fn time_end(&self, name: impl Into<String>) {
        if let Some((_k, _v)) = self.instants.lock().unwrap().remove_entry(&name.into()) {
            #[cfg(feature = "log")]
            println!("{} {}ms - timer ended", _k, _v.elapsed().as_millis());
        }
    }

    #[allow(unused_variables)]
    pub fn log(&self, message: impl Into<String>) {
        #[cfg(feature = "log")]
        println!("{}", message.into());
    }
}