in below/procfs/src/lib.rs [592:616]
fn read_pid_io_from_path<P: AsRef<Path>>(path: P) -> Result<PidIo> {
let path = path.as_ref().join("io");
let file = File::open(&path).map_err(|e| Error::IoError(path.clone(), e))?;
let buf_reader = BufReader::new(file);
let mut pidio: PidIo = Default::default();
for line in buf_reader.lines() {
let line = line.map_err(|e| Error::IoError(path.clone(), e))?;
let mut items = line.split_whitespace();
if let Some(item) = items.next() {
match item {
"read_bytes:" => pidio.rbytes = parse_item!(path, items.next(), u64, line)?,
"write_bytes:" => pidio.wbytes = parse_item!(path, items.next(), u64, line)?,
_ => {}
}
}
}
if pidio == Default::default() {
Err(Error::InvalidFileFormat(path))
} else {
Ok(pidio)
}
}