Crates.io | kv2 |
lib.rs | kv2 |
version | 0.1.2 |
source | src |
created_at | 2024-11-17 21:33:41.030916 |
updated_at | 2024-11-18 03:19:06.345948 |
description | kv2 (keyvalues 2) format parser with serde support |
homepage | |
repository | https://github.com/dxshie/kv2 |
max_upload_size | |
id | 1451568 |
size | 83,230 |
A Rust crate for parsing Valve's KeyValues2 (KV2) format.
kv2
is a Rust library for parsing and serializing the KeyValues2 (KV2) format used by Valve in their games and tools. It allows you to read KV2 files and access their data in a structured way.
nom
parser combinator library for flexibility.Add kv2
to your Cargo.toml
dependencies:
[dependencies]
kv2 = { version = "0.1.2", features = ["serde"] }
use kv2::parse_kv2;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct DmElement {
id: String,
name: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DmeModel {
id: String,
visible: bool,
}
fn main() {
let input = r#"
"DmElement"
{
"id" "elementid" "df939bf4-8dd6-435c-9eef-a6e25434ecca"
"name" "string" "root"
}
"DmeModel"
{
"id" "elementid" "90e0ae34-0671-478d-95f5-12fa5c905c7a"
"visible" "bool" "1"
}
"#;
match parse_kv2(input) {
Ok(data) => {
let element = DmElement::deserialize(data.1[0].clone());
let model = DmeModel::deserialize(data.1[1].clone());
}
Err(e) => {
error!("{:?}", e);
}
}
}