diff --git a/Cargo.lock b/Cargo.lock index a423325b..40bddd4d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3723,10 +3723,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ + "indexmap 2.13.0", "itoa", "memchr", "serde", diff --git a/Cargo.toml b/Cargo.toml index 5d75cad6..c1eaf4f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ mavlink-codec = { git = "https://github.com/bluerobotics/rust-mavlink-codec", ha regex = { version = "1.10.6", features = ["std", "unicode-perl"] } serde = { version = "1", features = ["rc"] } serde_derive = "1" -serde_json = "1" +serde_json = { version = "1", features = ["preserve_order"] } serde_urlencoded = "0.7" shellexpand = "3.1" tokio = { version = "1", features = ["full"] } diff --git a/src/lib/drivers/rest/data.rs b/src/lib/drivers/rest/data.rs index 35045330..b2952ee5 100644 --- a/src/lib/drivers/rest/data.rs +++ b/src/lib/drivers/rest/data.rs @@ -1,8 +1,6 @@ -use std::{ - collections::HashMap, - sync::{Arc, Mutex}, -}; +use std::sync::{Arc, Mutex}; +use indexmap::IndexMap; use lazy_static::lazy_static; use mavlink::{self, Message}; use serde::{Deserialize, Serialize}; @@ -22,7 +20,7 @@ struct Data { #[derive(Debug, Default, Deserialize, Serialize)] pub struct MAVLinkVehiclesData { - vehicles: HashMap, + vehicles: IndexMap, } impl MAVLinkVehiclesData { @@ -32,7 +30,7 @@ impl MAVLinkVehiclesData { .entry(vehicle_id) .or_insert(MAVLinkVehicleData { id: vehicle_id, - components: HashMap::new(), + components: IndexMap::new(), }) .update(message); } @@ -58,7 +56,7 @@ impl MAVLinkVehiclesData { #[derive(Debug, Deserialize, Serialize)] struct MAVLinkVehicleData { id: u8, - components: HashMap, + components: IndexMap, } impl MAVLinkVehicleData { @@ -68,7 +66,7 @@ impl MAVLinkVehicleData { .entry(component_id) .or_insert(MAVLinkVehicleComponentData { id: component_id, - messages: HashMap::new(), + messages: IndexMap::new(), }) .update(message); } @@ -77,7 +75,7 @@ impl MAVLinkVehicleData { #[derive(Debug, Deserialize, Serialize)] struct MAVLinkVehicleComponentData { id: u8, - messages: HashMap, + messages: IndexMap, } impl MAVLinkVehicleComponentData {