aboutsummaryrefslogtreecommitdiff
path: root/vendor/serde_json/tests/regression/issue845.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
committerValentin Popov <valentin@popov.link>2024-07-19 15:37:58 +0300
commita990de90fe41456a23e58bd087d2f107d321f3a1 (patch)
tree15afc392522a9e85dc3332235e311b7d39352ea9 /vendor/serde_json/tests/regression/issue845.rs
parent3d48cd3f81164bbfc1a755dc1d4a9a02f98c8ddd (diff)
downloadfparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.tar.xz
fparkan-a990de90fe41456a23e58bd087d2f107d321f3a1.zip
Deleted vendor folder
Diffstat (limited to 'vendor/serde_json/tests/regression/issue845.rs')
-rw-r--r--vendor/serde_json/tests/regression/issue845.rs73
1 files changed, 0 insertions, 73 deletions
diff --git a/vendor/serde_json/tests/regression/issue845.rs b/vendor/serde_json/tests/regression/issue845.rs
deleted file mode 100644
index e8b0c0f..0000000
--- a/vendor/serde_json/tests/regression/issue845.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-#![allow(clippy::trait_duplication_in_bounds)] // https://github.com/rust-lang/rust-clippy/issues/8757
-
-use serde::{Deserialize, Deserializer};
-use std::fmt::{self, Display};
-use std::marker::PhantomData;
-use std::str::FromStr;
-
-pub struct NumberVisitor<T> {
- marker: PhantomData<T>,
-}
-
-impl<'de, T> serde::de::Visitor<'de> for NumberVisitor<T>
-where
- T: TryFrom<u64> + TryFrom<i64> + FromStr,
- <T as TryFrom<u64>>::Error: Display,
- <T as TryFrom<i64>>::Error: Display,
- <T as FromStr>::Err: Display,
-{
- type Value = T;
-
- fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter.write_str("an integer or string")
- }
-
- fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
- where
- E: serde::de::Error,
- {
- T::try_from(v).map_err(serde::de::Error::custom)
- }
-
- fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
- where
- E: serde::de::Error,
- {
- T::try_from(v).map_err(serde::de::Error::custom)
- }
-
- fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
- where
- E: serde::de::Error,
- {
- v.parse().map_err(serde::de::Error::custom)
- }
-}
-
-fn deserialize_integer_or_string<'de, D, T>(deserializer: D) -> Result<T, D::Error>
-where
- D: Deserializer<'de>,
- T: TryFrom<u64> + TryFrom<i64> + FromStr,
- <T as TryFrom<u64>>::Error: Display,
- <T as TryFrom<i64>>::Error: Display,
- <T as FromStr>::Err: Display,
-{
- deserializer.deserialize_any(NumberVisitor {
- marker: PhantomData,
- })
-}
-
-#[derive(Deserialize, Debug)]
-pub struct Struct {
- #[serde(deserialize_with = "deserialize_integer_or_string")]
- pub i: i64,
-}
-
-#[test]
-fn test() {
- let j = r#" {"i":100} "#;
- println!("{:?}", serde_json::from_str::<Struct>(j).unwrap());
-
- let j = r#" {"i":"100"} "#;
- println!("{:?}", serde_json::from_str::<Struct>(j).unwrap());
-}