libfetch 0.1.0

Simple but reliable library for fetch tools
Documentation
use std::fs;

pub fn memory() -> Option<Memory> {
    let meminfo = fs::read_to_string("/proc/meminfo").ok()?;

    let mut free: usize = 0;
    let mut total: usize = 0;
    let mut buffers: usize = 0;
    let mut cached: usize = 0;

    for line in meminfo.lines() {
        if line.is_empty() {
            continue;
        }

        let entries = line.split_whitespace().collect::<Vec<&str>>();
        if entries.len() < 2 {
            continue;
        }
            
        match entries[0] {
            "MemTotal:" => {
                total = entries[1].parse().ok()?;
            }
            "MemFree:" => {
                free = entries[1].parse().ok()?;
            }
            "Buffers:" => {
                buffers = entries[1].parse().ok()?;
            }
            "Cached:" => {
                cached = entries[1].parse().ok()?;
            }
            _ => {
                continue;
            }
        }
    }

    let used = total - free - buffers - cached;
    let memory = Memory::new(used, total);
    Some(memory)
}

#[derive(Debug)]
pub struct Memory {
    pub total: usize,
    pub used: usize,
}

impl Memory {
    pub fn new(used: usize, total: usize) -> Self {
        Memory { used, total  }
    }
}

impl Default for Memory {
    fn default() -> Self {
        Memory {
            total: 0,
            used: 0,
        }  
    }
}