yara 0.32.0

Rust bindings for VirusTotal/yara
use std::fs::remove_file;

use yara::{Compiler, Rules};

const RULES_FILE: &str = "test_save_1.yar";

const RULES: &str = "rule a_rule {
  condition:
    filesize > 0
}
";

fn test_save() {
    let compiler = Compiler::new()
        .unwrap()
        .add_rules_str(RULES)
        .expect("add_rules_str should not fail");
    let mut rules = compiler.compile_rules().unwrap();
    rules.save(RULES_FILE).expect("Should be Ok");
}

fn test_load() {
    assert!(Rules::load_from_file(RULES_FILE).is_ok());
}

#[test]
fn test_save_and_load() {
    let _ = remove_file(RULES_FILE);
    test_save();
    test_load();
    remove_file(RULES_FILE).expect("Should have remove rule file");
}