From 4cc9ea77abfbf8d7fe934a1726163d3821fb36f2 Mon Sep 17 00:00:00 2001 From: Chance Date: Wed, 6 Sep 2023 15:03:40 -0400 Subject: [PATCH 1/4] adds `as_str` to `Number` if `arbitrary_precision` is enabled --- src/number.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/number.rs b/src/number.rs index 7ff66681d..9254284dc 100644 --- a/src/number.rs +++ b/src/number.rs @@ -279,6 +279,16 @@ impl Number { } } + /// Returns the `&str` representation of the `Number`. + /// ``` + /// # use serde_json::Number; + /// + /// assert_eq!(Number::from_f64(256.0).unwrap().as_str(), "256.0"); + /// assert_eq!(Number::from_f64(34.0).unwrap().as_str(), "34.0"); + pub fn as_str(&self) -> &str { + &self.n + } + pub(crate) fn as_f32(&self) -> Option { #[cfg(not(feature = "arbitrary_precision"))] match self.n { From 99bc2df40b47931f776083bcdec47f281531fc55 Mon Sep 17 00:00:00 2001 From: Chance Date: Wed, 6 Sep 2023 15:13:42 -0400 Subject: [PATCH 2/4] adds missing cfg attr to as_str --- src/number.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/number.rs b/src/number.rs index 9254284dc..2bd2c8e42 100644 --- a/src/number.rs +++ b/src/number.rs @@ -279,6 +279,7 @@ impl Number { } } + #[cfg(feature = "arbitrary_precision")] /// Returns the `&str` representation of the `Number`. /// ``` /// # use serde_json::Number; From 029fda06fad9a4b2da7e5f0b2d0c5151b33e1a7b Mon Sep 17 00:00:00 2001 From: Chance Date: Thu, 7 Sep 2023 13:21:51 -0400 Subject: [PATCH 3/4] improves `Number::as_str` doc example --- src/number.rs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/number.rs b/src/number.rs index 2bd2c8e42..dfd16f720 100644 --- a/src/number.rs +++ b/src/number.rs @@ -283,9 +283,18 @@ impl Number { /// Returns the `&str` representation of the `Number`. /// ``` /// # use serde_json::Number; - /// - /// assert_eq!(Number::from_f64(256.0).unwrap().as_str(), "256.0"); - /// assert_eq!(Number::from_f64(34.0).unwrap().as_str(), "34.0"); + /// for value in [ + /// "7", + /// "12.34", + /// "34e-56789", + /// "0.0123456789000000012345678900000001234567890000123456789", + /// "343412345678910111213141516171819202122232425262728293034", + /// "-343412345678910111213141516171819202122232425262728293031", + /// ] { + /// println!("{value}"); + /// let number: Number = serde_json::from_str(value).unwrap(); + /// assert_eq!(number.as_str(), value); + /// } pub fn as_str(&self) -> &str { &self.n } From 1786de244fd5ec13c35936e40e917bbc63bb297a Mon Sep 17 00:00:00 2001 From: Chance Date: Thu, 7 Sep 2023 13:22:21 -0400 Subject: [PATCH 4/4] removes `println!` from example --- src/number.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/number.rs b/src/number.rs index dfd16f720..f4925a0b4 100644 --- a/src/number.rs +++ b/src/number.rs @@ -291,7 +291,6 @@ impl Number { /// "343412345678910111213141516171819202122232425262728293034", /// "-343412345678910111213141516171819202122232425262728293031", /// ] { - /// println!("{value}"); /// let number: Number = serde_json::from_str(value).unwrap(); /// assert_eq!(number.as_str(), value); /// }