diff --git a/src/system/nd.rs b/src/system/nd.rs index dbad2e2..2944836 100644 --- a/src/system/nd.rs +++ b/src/system/nd.rs @@ -2,7 +2,7 @@ use std::ops::Add; use num_integer::Integer; use rand::Rng; use serde::{Serialize, Serializer}; -use serde::ser::SerializeMap; +use serde::ser::{SerializeMap, SerializeSeq, SerializeStruct}; use crate::system::GriddedPosition; use crate::system::Storage; @@ -48,11 +48,11 @@ impl Add for NDPosition { impl Serialize for NDPosition { fn serialize(&self, serializer: S) -> Result where S: Serializer { - let mut map = serializer.serialize_map(Some(DIM))?; + let mut ser = serializer.serialize_struct("NDPosition", DIM)?; for (i, v) in self.0.iter().enumerate() { - map.serialize_entry(&format!("r{}", i), v)?; + ser.serialize_field(Box::leak(Box::new(format!("r{i}"))), v)?; } - map.end() + ser.end() } }