From 1d2b90f7c3180f6a6a7fab78c018c78aeaba4044 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Sun, 21 Sep 2025 20:39:23 +0200 Subject: [PATCH] xml: Sort namespaces Fixes #104 --- Cargo.lock | 1 + crates/xml/derive/Cargo.toml | 1 + crates/xml/derive/src/xml_struct/impl_se.rs | 2 ++ 3 files changed, 4 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 624bc2c..b01c6cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5085,6 +5085,7 @@ version = "0.1.0" dependencies = [ "darling 0.21.3", "heck", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.106", diff --git a/crates/xml/derive/Cargo.toml b/crates/xml/derive/Cargo.toml index 52db753..ffb04f3 100644 --- a/crates/xml/derive/Cargo.toml +++ b/crates/xml/derive/Cargo.toml @@ -13,3 +13,4 @@ quote.workspace = true proc-macro2.workspace = true heck.workspace = true darling.workspace = true +itertools.workspace = true diff --git a/crates/xml/derive/src/xml_struct/impl_se.rs b/crates/xml/derive/src/xml_struct/impl_se.rs index d7431c6..8365b3d 100644 --- a/crates/xml/derive/src/xml_struct/impl_se.rs +++ b/crates/xml/derive/src/xml_struct/impl_se.rs @@ -1,3 +1,4 @@ +use itertools::Itertools; use quote::quote; use crate::{Field, attrs::FieldType}; @@ -69,6 +70,7 @@ impl NamedStruct { self.attrs .ns_prefix .iter() + .sorted_by_key(|(_ns, prefix)| prefix.value()) .map(|(ns, prefix)| { let attr_name = if prefix.value().is_empty() { "xmlns".to_owned()