use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Rusage {
pub real_time: Duration,
pub user_time: Duration,
pub system_time: Duration,
pub max_rss: i64,
}
impl Rusage {
pub(crate) fn from_nix_rusage(
rusage: nix::sys::resource::Usage,
real_time: Duration,
) -> Option<Self> {
let user_time = rusage.user_time();
let user_time = Duration::new(
user_time.tv_sec() as u64,
(user_time.tv_usec() * 1000) as u32,
);
let system_time = rusage.system_time();
let system_time = Duration::new(
system_time.tv_sec() as u64,
(system_time.tv_usec() * 1000) as u32,
);
Some(Self {
real_time,
user_time,
system_time,
max_rss: rusage.max_rss(),
})
}
}