fix empty string value handling
This commit is contained in:
parent
44ac8ab84d
commit
e81d520993
1 changed files with 11 additions and 2 deletions
|
@ -151,7 +151,7 @@ impl EntryValue {
|
|||
EntryValue::String(value) => ('S', value.to_owned()),
|
||||
EntryValue::Number(n) => ('N', n.to_string()),
|
||||
EntryValue::Address(address) => ('O', address.to_string()),
|
||||
EntryValue::Invalid => return Err(anyhow!("Cannot serialize invalid Entity value.")),
|
||||
EntryValue::Invalid => return Err(anyhow!("Cannot serialize invalid value.")),
|
||||
};
|
||||
|
||||
Ok(format!("{}{}", type_char, content))
|
||||
|
@ -175,7 +175,11 @@ impl std::str::FromStr for EntryValue {
|
|||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
if s.len() < 2 {
|
||||
if s.starts_with('S') {
|
||||
Ok(EntryValue::String("".into()))
|
||||
} else {
|
||||
Ok(EntryValue::Invalid)
|
||||
}
|
||||
} else {
|
||||
let (type_char, content) = s.split_at(1);
|
||||
match (type_char, content) {
|
||||
|
@ -228,6 +232,11 @@ mod tests {
|
|||
let decoded = encoded.parse::<EntryValue>()?;
|
||||
assert_eq!(entry, decoded);
|
||||
|
||||
let entry = EntryValue::String("".to_string());
|
||||
let encoded = entry.to_string()?;
|
||||
let decoded = encoded.parse::<EntryValue>()?;
|
||||
assert_eq!(entry, decoded);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue