frozen_collections_core/inline_sets/
inline_eytzinger_search_set.rs1use crate::inline_maps::InlineEytzingerSearchMap;
2use crate::sets::decl_macros::{
3 bitand_trait_funcs, bitor_trait_funcs, bitxor_trait_funcs, common_primary_funcs, debug_trait_funcs, eytzinger_search_primary_funcs,
4 into_iterator_ref_trait_funcs, into_iterator_trait_funcs, partial_eq_trait_funcs, set_extras_trait_funcs, set_iteration_trait_funcs,
5 set_query_trait_funcs, sub_trait_funcs,
6};
7use crate::sets::{IntoIter, Iter};
8use crate::traits::{Len, Set, SetExtras, SetIteration, SetOps, SetQuery};
9use core::fmt::Debug;
10use core::hash::Hash;
11use core::ops::{BitAnd, BitOr, BitXor, Sub};
12use equivalent::Comparable;
13
14use crate::maps::decl_macros::len_trait_funcs;
15#[cfg(feature = "serde")]
16use {
17 crate::sets::decl_macros::serialize_trait_funcs,
18 serde::ser::SerializeSeq,
19 serde::{Serialize, Serializer},
20};
21
22#[doc = include_str!("../doc_snippets/private_api_warning.md")]
25#[doc = include_str!("../doc_snippets/about.md")]
26#[doc = include_str!("../doc_snippets/ord_warning.md")]
27#[derive(Clone)]
33pub struct InlineEytzingerSearchSet<T, const SZ: usize> {
34 map: InlineEytzingerSearchMap<T, (), SZ>,
35}
36
37impl<T, const SZ: usize> InlineEytzingerSearchSet<T, SZ> {
38 #[must_use]
40 pub const fn new(map: InlineEytzingerSearchMap<T, (), SZ>) -> Self {
41 Self { map }
42 }
43
44 eytzinger_search_primary_funcs!();
45 common_primary_funcs!(const_len);
46}
47
48impl<T, Q, const SZ: usize> Set<T, Q> for InlineEytzingerSearchSet<T, SZ> where Q: ?Sized + Comparable<T> {}
49
50impl<T, Q, const SZ: usize> SetExtras<T, Q> for InlineEytzingerSearchSet<T, SZ>
51where
52 Q: ?Sized + Comparable<T>,
53{
54 set_extras_trait_funcs!();
55}
56
57impl<T, Q, const SZ: usize> SetQuery<Q> for InlineEytzingerSearchSet<T, SZ>
58where
59 Q: ?Sized + Comparable<T>,
60{
61 set_query_trait_funcs!();
62}
63
64impl<T, const SZ: usize> SetIteration<T> for InlineEytzingerSearchSet<T, SZ> {
65 type Iterator<'a>
66 = Iter<'a, T>
67 where
68 T: 'a;
69
70 set_iteration_trait_funcs!();
71}
72
73impl<T, const SZ: usize> Len for InlineEytzingerSearchSet<T, SZ> {
74 len_trait_funcs!();
75}
76
77impl<T, ST, const SZ: usize> BitOr<&ST> for &InlineEytzingerSearchSet<T, SZ>
78where
79 T: Hash + Ord + Clone,
80 ST: Set<T>,
81{
82 bitor_trait_funcs!();
83}
84
85impl<T, ST, const SZ: usize> BitAnd<&ST> for &InlineEytzingerSearchSet<T, SZ>
86where
87 T: Hash + Ord + Clone,
88 ST: Set<T>,
89{
90 bitand_trait_funcs!();
91}
92
93impl<T, ST, const SZ: usize> BitXor<&ST> for &InlineEytzingerSearchSet<T, SZ>
94where
95 T: Hash + Ord + Clone,
96 ST: Set<T>,
97{
98 bitxor_trait_funcs!();
99}
100
101impl<T, ST, const SZ: usize> Sub<&ST> for &InlineEytzingerSearchSet<T, SZ>
102where
103 T: Hash + Ord + Clone,
104 ST: Set<T>,
105{
106 sub_trait_funcs!();
107}
108
109impl<T, const SZ: usize> IntoIterator for InlineEytzingerSearchSet<T, SZ> {
110 into_iterator_trait_funcs!();
111}
112
113impl<'a, T, const SZ: usize> IntoIterator for &'a InlineEytzingerSearchSet<T, SZ> {
114 into_iterator_ref_trait_funcs!();
115}
116
117impl<T, ST, const SZ: usize> PartialEq<ST> for InlineEytzingerSearchSet<T, SZ>
118where
119 T: Ord,
120 ST: SetQuery<T>,
121{
122 partial_eq_trait_funcs!();
123}
124
125impl<T, const SZ: usize> Eq for InlineEytzingerSearchSet<T, SZ> where T: Ord {}
126
127impl<T, const SZ: usize> Debug for InlineEytzingerSearchSet<T, SZ>
128where
129 T: Debug,
130{
131 debug_trait_funcs!();
132}
133
134#[cfg(feature = "serde")]
135impl<T, const SZ: usize> Serialize for InlineEytzingerSearchSet<T, SZ>
136where
137 T: Serialize,
138{
139 serialize_trait_funcs!();
140}