use serde::{Serialize, Serializer}; use std::collections::HashMap; use zvariant::OwnedValue; //use std::hash::BuildHasher; use serde::ser::SerializeMap; pub fn serialize_actions(actions: &[String], serializer: S) -> Result where S: Serializer, { let mut map = serde_json::Map::new(); // Actions are in pairs: [id, label, id, label, ...] for pair in actions.chunks(2) { if let [id, label] = pair { map.insert(id.clone(), serde_json::Value::String(label.clone())); } } map.serialize(serializer) } /* pub fn serialize_hints(hints: &HashMap, serializer: S) -> Result where S: serde::Serializer, { let mut map = serializer.serialize_map(Some(hints.len()))?; for (key, value) in hints { // Try to cast the value to a string, otherwise fallback to debug format let value_str = match value.downcast_ref::() { Ok(s) => s.clone(), // Successfully cast to String Err(_) => format!("{:?}", value), // Fallback for non-String values }; map.serialize_entry(key, &value_str)?; } map.end() } */ /* pub fn serialize_hints( hints: &HashMap, serializer: S, ) -> Result where S: Serializer, H: BuildHasher, { let mut map = serde_json::Map::new(); for (key, value) in hints { // Customize OwnedValue serialization as needed map.insert(key.clone(), serde_json::Value::String(value.to_string())); } map.serialize(serializer) } */