stl-bin-parser 0.0.1

A simple parser for the STL binary format.
Documentation
use nom::{le_f32, le_u16, le_u32};
use super::{Stl, Triangle, Vertex};

#[cfg(test)]
mod tests;

named!(pub parse(&[u8]) -> Stl, do_parse!(
    take!(80) >>
    facet_count: le_u32 >>
    triangles: count!(triangle, facet_count as usize) >>
    eof!() >>
    (Stl { triangles: triangles })
));

named!(triangle(&[u8]) -> Triangle, do_parse!(
    norm: vertex >>
    v1: vertex >>
    v2: vertex >>
    v3: vertex >>
    verify!(le_u16, |attr_count| attr_count == 0) >>
    (Triangle {
        norm: norm,
        vertices: [v1, v2, v3],
    })
));

named!(vertex(&[u8]) -> Vertex, do_parse!(
    x: le_f32 >>
    y: le_f32 >>
    z: le_f32 >>
    (Vertex(x, y, z))
));