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/pptr.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/classes/pptr.rs') diff --git a/src/classes/pptr.rs b/src/classes/pptr.rs index 9d9becc..d6e4bb6 100644 --- a/src/classes/pptr.rs +++ b/src/classes/pptr.rs @@ -1,6 +1,6 @@ use super::HValue; use crate::object::{Value, parser::FromValue}; -use anyhow::Result; +use anyhow::{Result, anyhow, bail}; use serde::Serialize; use std::marker::PhantomData; @@ -16,18 +16,22 @@ pub struct PPtr { impl FromValue for PPtr { fn from_value(v: Value) -> Result { let Value::Object { class, fields } = v else { - unreachable!() + bail!("PPtr expected but not an object") }; let inner = class .strip_prefix("PPtr<") - .unwrap() + .ok_or(anyhow!("not a PPtr"))? .strip_suffix(">") - .unwrap(); + .ok_or(anyhow!("PPtr '>' missing"))?; Ok(PPtr { class: inner.to_owned(), _class: PhantomData, - file_id: fields["m_FileID"].as_i32().unwrap(), - path_id: fields["m_PathID"].as_i64().unwrap(), + file_id: fields["m_FileID"] + .as_i32() + .ok_or(anyhow!("PPtr m_FileID is not i32"))?, + path_id: fields["m_PathID"] + .as_i64() + .ok_or(anyhow!("PPtr m_FileID is not i64"))?, }) } } -- cgit v1.2.3-70-g09d2