mycelium_core 0.1.1

Library for Mycelium DDM
Documentation
use std::fs::File;
use std::io::prelude::*;
use std::path::PathBuf;

use crate::ephemeral::history::History;

pub fn read_head(path: &PathBuf) -> Option<History> {
    if path.exists() && path.is_file() {
        let file = match File::open(path) {
            Ok(f) => Some(f),
            Err(_) => None,
        };

        let mut buffer = Vec::new();
        if file.is_some() {
            let mut file = file.unwrap();
            match file.read_to_end(&mut buffer) {
                Ok(_) => (),
                Err(e) => {
                    error!("Error: {:?}", e);
                    return None;
                }
            }
            let hist = match bincode::deserialize(buffer.as_slice()) {
                Ok(h) => h,
                Err(e) => panic!("Failed to deserialize history: {:?}", e),
            };
            buffer.clear();
            Some(hist)
        } else {
            None
        }
    } else {
        None
    }
}