1use {
2 crate::errors::ProcStatusError,
3};
4
5pub struct ProcEntry<'p> {
9 pub key: &'p str,
10 pub value: &'p str,
11}
12
13impl<'p> ProcEntry<'p> {
14 pub(crate) fn new(src: &'p str) -> Result<Self, ProcStatusError> {
15 src.find(':')
16 .map(|i| Self {
17 key: &src[..i],
18 value: src[i+1..].trim(),
19 })
20 .ok_or_else(|| ProcStatusError::NoColon(src.to_string()))
21 }
22 #[allow(non_snake_case)]
25 pub fn in_KiB(&self) -> Result<usize, ProcStatusError> {
26 if let Some(number) = self.value.strip_suffix(" kB") {
27 Ok(number.parse()?)
28 } else {
29 Err(ProcStatusError::NotInKib)
30 }
31 }
32}