source-kv 0.3.0

A Serde serialization and deserialization library for Valve's Key-Value format.
Documentation
use std::collections::HashMap;
use std::fs;
use std::path::Path;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let path = Path::new("examples/data/example.vmt");
    let content = fs::read_to_string(path)?;

    println!("Reading VMT from: {:?}", path);

    let vmt: HashMap<String, HashMap<String, Vec<String>>> = source_kv::from_str(&content)?;

    println!("\nDeserialized VMT as HashMap:");
    for (shader_name, properties) in &vmt {
        println!("Shader: {}", shader_name);
        for (key, values) in properties {
            println!("  {}: {:?}", key, values[0]);
        }
    }

    let serialized = source_kv::to_string(&vmt);
    println!("\nSerialized VMT:\n{}", serialized.unwrap());

    Ok(())
}