Refactor is_hex_string
This commit is contained in:
parent
348e509ddc
commit
103586570f
23
src/pcd.rs
23
src/pcd.rs
@ -290,24 +290,21 @@ pub trait Pcd<'a>: Serialize + Deserialize<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_hex_string(&self) -> bool {
|
fn is_hex_string(&self, length: Option<usize>) -> Result<()> {
|
||||||
let value = match serde_json::to_value(self) {
|
let value = serde_json::to_value(self)?;
|
||||||
Ok(v) => v,
|
|
||||||
Err(_) => return false
|
|
||||||
};
|
|
||||||
|
|
||||||
match value {
|
match value {
|
||||||
Value::String(s) => {
|
Value::String(s) => {
|
||||||
let vec = Vec::from_hex(&s);
|
let vec = Vec::from_hex(&s)?;
|
||||||
if vec.is_err() {
|
if let Some(len) = length {
|
||||||
return false;
|
let got_length = vec.len();
|
||||||
} else if vec.unwrap().len() != 32 {
|
if got_length != len {
|
||||||
return false;
|
return Err(Error::msg(format!("Wrong length: expected {}, got {}", len, got_length)));
|
||||||
} else {
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
_ => false
|
_ => Err(Error::msg("Not a string Value"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user