Files
helios-server-rs/src/model/req.rs

24 lines
649 B
Rust
Raw Normal View History

2024-08-12 22:41:06 +08:00
use std::fmt;
use std::str::FromStr;
2024-08-11 09:25:09 +00:00
use serde::{de, Deserialize, Deserializer};
#[derive(Debug, Deserialize)]
pub struct Params {
#[serde(default, deserialize_with="empty_string_as_none")]
2024-08-12 22:41:06 +08:00
pub transaction_id: Option<i64>,
}
// Serde deserialization decorator to map empty Strings to None,
fn empty_string_as_none<'de, D, T>(de: D) -> Result<Option<T>, D::Error>
where
D: Deserializer<'de>,
T: FromStr,
T::Err: fmt::Display,
{
let opt = Option::<String>::deserialize(de)?;
match opt.as_deref() {
None | Some("") => Ok(None),
Some(s) => FromStr::from_str(s).map_err(de::Error::custom).map(Some),
}
}