From 27526bb91cb6341b775666c518437fbedc58fc52 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 2 Mar 2026 08:52:17 +0000 Subject: [PATCH] Simplify binary float parsing in BinaryStlReader Replace manual byte indexing with slice conversion and add a vector helper closure to reduce repetition when reading 3D points. https://claude.ai/code/session_01PRd8gZTjtXkiEkU5hNL5rt --- src/binary_reader.rs | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/binary_reader.rs b/src/binary_reader.rs index df4936c..f6e0b75 100644 --- a/src/binary_reader.rs +++ b/src/binary_reader.rs @@ -33,21 +33,11 @@ impl<'a> BinaryStlReader<'a> { let mut buf = [0u8; 50]; self.reader.read_exact(&mut buf)?; - let f = |offset: usize| -> f32 { - f32::from_le_bytes([ - buf[offset], - buf[offset + 1], - buf[offset + 2], - buf[offset + 3], - ]) - }; + let f = |o: usize| f32::from_le_bytes(buf[o..o + 4].try_into().unwrap()); + let v = |base: usize| [f(base), f(base + 4), f(base + 8)]; - let normal = Normal::new([f(0), f(4), f(8)]); - let vertices = [ - Vertex::new([f(12), f(16), f(20)]), - Vertex::new([f(24), f(28), f(32)]), - Vertex::new([f(36), f(40), f(44)]), - ]; + let normal = Normal::new(v(0)); + let vertices = [Vertex::new(v(12)), Vertex::new(v(24)), Vertex::new(v(36))]; // buf[48..50] is the attribute byte count, ignored Ok(Triangle { normal, vertices })