From 103586570fdc1c7f25c67b8116ce2509414960d9 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Fri, 6 Dec 2024 15:26:30 +0100 Subject: [PATCH] Refactor is_hex_string --- src/pcd.rs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/pcd.rs b/src/pcd.rs index 1fd7d26..8d915d8 100644 --- a/src/pcd.rs +++ b/src/pcd.rs @@ -290,24 +290,21 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> { } } - fn is_hex_string(&self) -> bool { - let value = match serde_json::to_value(self) { - Ok(v) => v, - Err(_) => return false - }; + fn is_hex_string(&self, length: Option) -> Result<()> { + let value = serde_json::to_value(self)?; match value { Value::String(s) => { - let vec = Vec::from_hex(&s); - if vec.is_err() { - return false; - } else if vec.unwrap().len() != 32 { - return false; - } else { - return true; + let vec = Vec::from_hex(&s)?; + if let Some(len) = length { + let got_length = vec.len(); + if got_length != len { + return Err(Error::msg(format!("Wrong length: expected {}, got {}", len, got_length))); + } } + Ok(()) } - _ => false + _ => Err(Error::msg("Not a string Value")) } } }