From 56cbc53c8b9b82e7705e268e3cb1bc1e36cdadac Mon Sep 17 00:00:00 2001 From: metamuffin Date: Thu, 13 Mar 2025 20:20:25 +0100 Subject: remove a few unwraps --- src/classes/mesh.rs | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'src/classes/mesh.rs') diff --git a/src/classes/mesh.rs b/src/classes/mesh.rs index 328af97..b6e6821 100644 --- a/src/classes/mesh.rs +++ b/src/classes/mesh.rs @@ -44,7 +44,7 @@ pub struct ChannelInfo { impl FromValue for Mesh { fn from_value(v: Value) -> Result { - let mut fields = v.as_class("Mesh").unwrap(); + let mut fields = v.as_class("Mesh")?; Ok(Mesh { name: fields.field("m_Name")?, index_format: fields.field("m_IndexFormat")?, @@ -105,10 +105,14 @@ impl Mesh { impl FromValue for VertexData { fn from_value(v: Value) -> Result { - let mut fields = v.as_class("VertexData").unwrap(); + let mut fields = v.as_class("VertexData")?; Ok(VertexData { vertex_count: fields.field("m_VertexCount")?, - data: fields.remove("m_DataSize").unwrap().as_typeless().unwrap(), + data: fields + .remove("m_DataSize") + .ok_or(anyhow!("m_DataSize missing"))? + .as_typeless() + .ok_or(anyhow!("m_DataSize is not typeless"))?, channels: fields .remove("m_Channels") .unwrap() @@ -168,26 +172,26 @@ impl VertexData { impl FromValue for ChannelInfo { fn from_value(v: Value) -> Result { - let mut fields = v.as_class("ChannelInfo").unwrap(); + let mut fields = v.as_class("ChannelInfo")?; Ok(ChannelInfo { - dimension: fields.remove("dimension").unwrap().parse().unwrap(), - format: fields.remove("format").unwrap().parse().unwrap(), - offset: fields.remove("offset").unwrap().parse().unwrap(), - stream: fields.remove("stream").unwrap().parse().unwrap(), + dimension: fields.field("dimension")?, + format: fields.field("format")?, + offset: fields.field("offset")?, + stream: fields.field("stream")?, }) } } impl FromValue for SubMesh { fn from_value(v: Value) -> Result { - let mut fields = v.as_class("SubMesh").unwrap(); + let mut fields = v.as_class("SubMesh")?; Ok(SubMesh { - topology: fields.remove("topology").unwrap().parse().unwrap(), - vertex_count: fields.remove("vertexCount").unwrap().parse().unwrap(), - base_vertex: fields.remove("baseVertex").unwrap().parse().unwrap(), - first_byte: fields.remove("firstByte").unwrap().parse().unwrap(), - first_vertex: fields.remove("firstVertex").unwrap().parse().unwrap(), - index_count: fields.remove("indexCount").unwrap().parse().unwrap(), + topology: fields.field("topology")?, + vertex_count: fields.field("vertexCount")?, + base_vertex: fields.field("baseVertex")?, + first_byte: fields.field("firstByte")?, + first_vertex: fields.field("firstVertex")?, + index_count: fields.field("indexCount")?, }) } } -- cgit v1.2.3-70-g09d2