use super::impls::{foreach_map, foreach_set}; use crate::{ prelude::*, MapFirstKeyWins, MapPreventDuplicates, SetLastValueWins, SetPreventDuplicates, }; #[cfg(feature = "indexmap_1")] use indexmap_1::{IndexMap, IndexSet}; macro_rules! set_duplicate_handling { ($tyorig:ident < T $(, $typaram:ident : $bound:ident)* >) => { impl SerializeAs<$tyorig> for SetPreventDuplicates where TAs: SerializeAs, $($typaram: ?Sized + $bound,)* { fn serialize_as(value: &$tyorig, serializer: S) -> Result where S: Serializer, { <$tyorig>::serialize_as(value, serializer) } } impl SerializeAs<$tyorig> for SetLastValueWins where TAs: SerializeAs, $($typaram: ?Sized + $bound,)* { fn serialize_as(value: &$tyorig, serializer: S) -> Result where S: Serializer, { <$tyorig>::serialize_as(value, serializer) } } } } foreach_set!(set_duplicate_handling); macro_rules! map_duplicate_handling { ($tyorig:ident < K, V $(, $typaram:ident : $bound:ident)* >) => { impl SerializeAs<$tyorig> for MapPreventDuplicates where KAs: SerializeAs, VAs: SerializeAs, $($typaram: ?Sized + $bound,)* { fn serialize_as(value: &$tyorig, serializer: S) -> Result where S: Serializer, { <$tyorig>::serialize_as(value, serializer) } } impl SerializeAs<$tyorig> for MapFirstKeyWins where KAs: SerializeAs, VAs: SerializeAs, $($typaram: ?Sized + $bound,)* { fn serialize_as(value: &$tyorig, serializer: S) -> Result where S: Serializer, { <$tyorig>::serialize_as(value, serializer) } } } } foreach_map!(map_duplicate_handling);