simplebase 0.3.35

A simple to use database library
Documentation
use std::fs::File;
use std::fs::OpenOptions;
use std::io;
use std::io::prelude::*;

use std::{thread, time};

extern crate fs2;
use self::fs2::FileExt;

#[allow(dead_code)]
pub fn obfuscate_data(data_to_obfuscate: String) -> String {
    let string_to_vector = &data_to_obfuscate.as_bytes();
    let mut new_obfuscated_vector: Vec<u8> = Vec::new();
    let obfuscation_vector = vec![0x34, 0xc5, 0xd4, 0x54, 0x00, 0xd3, 0x2a, 0x55];
    let mut counter = 0;
    for i in string_to_vector.iter() {
        new_obfuscated_vector.push(i ^ obfuscation_vector[counter]);
        if counter > obfuscation_vector.len() - 1 {
            counter = 0;
        }
    }

    let result = String::from_utf8_lossy(&new_obfuscated_vector);
    result.to_string()
}
pub fn open_file(filename: &str) -> io::Result<Vec<u8>> {
    let file = File::open(&filename);
    let mut contents: Vec<u8> = Vec::new();
    match file {
        Ok(mut t) => {
            t.lock_exclusive()?;
            t.read_to_end(&mut contents).unwrap();
            t.unlock()?;
            Ok(contents)
        }
        Err(e) => {
            println!("{:?}{}", "Unable to open file ", filename);
            Err(e)
        }
    }
}

pub fn save_data(filename: &str, buf: &[u8]) {
    let mut file = OpenOptions::new()
        .write(true)
        .create(true)
        .truncate(true)
        .open(filename)
        .unwrap();

    loop {
        match file.lock_exclusive() {
            Ok(_) => {
                file.write_all(buf).unwrap();
                file.unlock().unwrap();
                return;
            }
            Err(_) => thread::sleep(time::Duration::from_millis(5)),
        }
    }
}