(deserializer: D)
| 42 | } |
| 43 | |
| 44 | pub fn deserialize_str<'de, T, D>(deserializer: D) -> Result<T, D::Error> |
| 45 | where |
| 46 | T: FromStr + DeserializeOwned, |
| 47 | <T as FromStr>::Err: Display, |
| 48 | D: de::Deserializer<'de>, |
| 49 | { |
| 50 | { |
| 51 | if deserializer.is_human_readable() { |
| 52 | let s = String::deserialize(deserializer)?; |
| 53 | match T::from_str(&s) { |
| 54 | Ok(a) => Ok(a), |
| 55 | Err(e) => Err(D::Error::custom(format!( |
| 56 | "error deserializing {}: {}", |
| 57 | type_name::<T>(), |
| 58 | e |
| 59 | ))), |
| 60 | } |
| 61 | } else { |
| 62 | T::deserialize(deserializer) |
| 63 | } |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | /// Create [`SerializeAs`] and [`DeserializeAs`] instances for `IsHumanReadable` for the |
| 68 | /// given type assuming it implements [`ToString`] and [`FromStr`]. |
nothing calls this directly
no test coverage detected