|
1 | 1 | //! Serialize a Rust data structure into JSON data
|
2 | 2 |
|
3 |
| -use core::{fmt, fmt::Write}; |
| 3 | +use core::fmt; |
4 | 4 |
|
5 | 5 | use serde::ser;
|
6 | 6 | use serde::ser::SerializeStruct as _;
|
7 | 7 |
|
8 |
| -use heapless::{consts::*, String, Vec}; |
| 8 | +use heapless::{String, Vec}; |
9 | 9 |
|
10 | 10 | use self::map::SerializeMap;
|
11 | 11 | use self::seq::SerializeSeq;
|
@@ -147,11 +147,11 @@ macro_rules! serialize_signed {
|
147 | 147 | }};
|
148 | 148 | }
|
149 | 149 |
|
150 |
| -macro_rules! serialize_fmt { |
151 |
| - ($self:ident, $uxx:ident, $fmt:expr, $v:expr) => {{ |
152 |
| - let mut s: String<$uxx> = String::new(); |
153 |
| - write!(&mut s, $fmt, $v).unwrap(); |
154 |
| - $self.extend_from_slice(s.as_bytes()) |
| 150 | +macro_rules! serialize_ryu { |
| 151 | + ($self:ident, $v:expr) => {{ |
| 152 | + let mut buffer = ryu::Buffer::new(); |
| 153 | + let printed = buffer.format($v); |
| 154 | + $self.extend_from_slice(printed.as_bytes()) |
155 | 155 | }};
|
156 | 156 | }
|
157 | 157 |
|
@@ -229,11 +229,11 @@ impl<'a, 'b: 'a> ser::Serializer for &'a mut Serializer<'b> {
|
229 | 229 | }
|
230 | 230 |
|
231 | 231 | fn serialize_f32(self, v: f32) -> Result<Self::Ok> {
|
232 |
| - serialize_fmt!(self, U16, "{:e}", v) |
| 232 | + serialize_ryu!(self, v) |
233 | 233 | }
|
234 | 234 |
|
235 | 235 | fn serialize_f64(self, v: f64) -> Result<Self::Ok> {
|
236 |
| - serialize_fmt!(self, U32, "{:e}", v) |
| 236 | + serialize_ryu!(self, v) |
237 | 237 | }
|
238 | 238 |
|
239 | 239 | fn serialize_char(self, _v: char) -> Result<Self::Ok> {
|
@@ -683,15 +683,15 @@ mod tests {
|
683 | 683 |
|
684 | 684 | assert_eq!(
|
685 | 685 | &*crate::to_string::<N, _>(&Temperature { temperature: -20. }).unwrap(),
|
686 |
| - r#"{"temperature":-2e1}"# |
| 686 | + r#"{"temperature":-20.0}"# |
687 | 687 | );
|
688 | 688 |
|
689 | 689 | assert_eq!(
|
690 | 690 | &*crate::to_string::<N, _>(&Temperature {
|
691 | 691 | temperature: -20345.
|
692 | 692 | })
|
693 | 693 | .unwrap(),
|
694 |
| - r#"{"temperature":-2.0345e4}"# |
| 694 | + r#"{"temperature":-20345.0}"# |
695 | 695 | );
|
696 | 696 |
|
697 | 697 | assert_eq!(
|
|
0 commit comments