| Crates.io | mnk-vmf |
| lib.rs | mnk-vmf |
| version | 0.1.0 |
| created_at | 2025-11-08 10:56:50.828022+00 |
| updated_at | 2025-11-08 10:56:50.828022+00 |
| description | A library for parsing Valve Map Format (VMF) files. |
| homepage | https://github.com/TheMenko/mnk-vmf |
| repository | https://github.com/TheMenko/mnk-vmf |
| max_upload_size | |
| id | 1922761 |
| size | 16,431,069 |
A high-performance parser for Valve Map Format (VMF) files written in Rust.
VMF (Valve Map Format) is a text-based file format used by Source Engine level editors like Hammer to store map data. This library provides a fast, memory-efficient parser.
[dependencies]
mnk_vmf = "0.1.0"
use mnk_vmf::VMF;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Open and parse a VMF file
let vmf = VMF::open("map.vmf")?;
let data = vmf.parse()?;
// Iterate through parsed blocks
for value in data {
match value {
VMFValue::World(world) => {
println!("World contains {} solids", world.solids.len());
}
VMFValue::Entity(entity) => {
println!("Entity: {:?}", entity.classname);
}
_ => {}
}
}
Ok(())
}
use mnk_vmf::{VMF, VMFValue};
let vmf = VMF::open("map.vmf")?;
let data = vmf.parse()?;
for value in data {
if let VMFValue::World(world) = value {
for solid in &world.solids {
println!("Solid ID: {}", solid.id);
for side in &solid.sides {
println!(" Material: {}", side.material);
println!(" Plane: {:?}", side.plane);
}
}
}
}
cargo build --release
cargo test
note: This crate uses over 150 tests, and almost everything is covered.
cargo bench
Licensed under either of
at your option.
Contributions are welcome! Please feel free to submit issues or pull requests.