4 releases
0.2.2 | Mar 15, 2021 |
---|---|
0.2.1 | Feb 2, 2021 |
0.2.0 | Nov 5, 2020 |
0.1.0 | Nov 5, 2020 |
#2169 in Parser implementations
354 downloads per month
32KB
662 lines
nom_stl
What
nom_stl
is a binary and ASCII STL parser, written in pure Rust, with only one runtime dependency: the nom parser combinator library.
nom_stl
automatically differentiates between ASCII and binary STLs.
It parses a 30M binary STL in <20ms.
Use
let file = std::fs::File::open("./fixtures/Root_Vase.stl").unwrap();
let mut root_vase = BufReader::new(&file);
let mesh: Mesh = parse_stl(&mut root_vase)?;
assert_eq!(mesh.triangles.len(), 596_736);
nom_stl
accepts STL bytes in a wide variety of argument formats: it will try to parse any collection of bytes that implements Read and Seek.
Running the tests
$ cargo test
To make the tests run faster (but increase build time), you can run the tests in release
mode.
To do this, run the following:
$ cargo test --release
Running the benchmarks
$ cargo bench
What does it need
- A solid public API
- Better tests, with better input data rather than 0's for some of the smaller parsers
- Testing around parsing Windows/DOS line-ending files
- Property testing (https://crates.io/crates/quickcheck)
- Latest Nom (5.1)
- Buffered IO
- Generic normal and vertex types
- Real documentation/rustdoc
- A license
- A home
Creative Commons
Attribution and thanks goes to the following people for licensing their files Creative Commons so we could include them in this project:
- C4robotics for Sailor Moon Disguise Pen
- virtox for Binary Roots
Dependencies
~1MB
~17K SLoC