use std::io::Read; use std::str::FromStr; use std::time::Duration;
/// The uptime of the system, based on the `/proc/uptime` file. #[derive(Debug, Clone)] #[non_exhaustive] pubstruct Uptime { /// The uptime of the system (including time spent in suspend). pub uptime: f64,
/// The sum of how much time each core has spent idle. pub idle: f64,
}
let line = String::from_utf8_lossy(&buf); let buf = line.trim();
letmut s = buf.split(' '); let uptime = expect!(f64::from_str(expect!(s.next()))); let idle = expect!(f64::from_str(expect!(s.next())));
Ok(Uptime { uptime, idle })
}
}
impl Uptime { /// The uptime of the system (including time spent in suspend). pubfn uptime_duration(&self) -> Duration { let secs = self.uptime.trunc() as u64; let csecs = (self.uptime.fract() * 100.0).round() as u32; let nsecs = csecs * 10_000_000;
Duration::new(secs, nsecs)
}
/// The sum of how much time each core has spent idle. pubfn idle_duration(&self) -> Duration { let secs = self.idle.trunc() as u64; let csecs = (self.idle.fract() * 100.0).round() as u32; let nsecs = csecs * 10_000_000;
Duration::new(secs, nsecs)
}
}
#[cfg(test)] mod tests { usesuper::*; usecrate::FromRead; use std::io::Cursor;
#[test] fn test_uptime() { let reader = Cursor::new(b"2578790.61 1999230.98\n"); let uptime = Uptime::from_read(reader).unwrap();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.