@@ -45,6 +45,9 @@ pub struct HistogramBuilder<'a, T> {
45
45
/// Unit of the Histogram.
46
46
pub unit : Option < Cow < ' static , str > > ,
47
47
48
+ /// Cardinality limit for the Histogram.
49
+ pub cardinality_limit : Option < usize > ,
50
+
48
51
/// Bucket boundaries for the histogram.
49
52
pub boundaries : Option < Vec < f64 > > ,
50
53
@@ -60,6 +63,7 @@ impl<'a, T> HistogramBuilder<'a, T> {
60
63
name,
61
64
description : None ,
62
65
unit : None ,
66
+ cardinality_limit : None ,
63
67
boundaries : None ,
64
68
_marker : marker:: PhantomData ,
65
69
}
@@ -83,6 +87,14 @@ impl<'a, T> HistogramBuilder<'a, T> {
83
87
self
84
88
}
85
89
90
+ /// Set the cardinality limit for this Histogram.
91
+ /// Setting cardinality limit is optional. By default, the limit will be set
92
+ /// to 2000.
93
+ pub fn with_cardinality_limit ( mut self , limit : usize ) -> Self {
94
+ self . cardinality_limit = Some ( limit) ;
95
+ self
96
+ }
97
+
86
98
/// Set the boundaries for this histogram.
87
99
///
88
100
/// Setting boundaries is optional. By default, the boundaries are set to:
@@ -150,6 +162,9 @@ pub struct InstrumentBuilder<'a, T> {
150
162
/// Unit of the instrument.
151
163
pub unit : Option < Cow < ' static , str > > ,
152
164
165
+ /// Cardinality limit for the instrument.
166
+ pub cardinality_limit : Option < usize > ,
167
+
153
168
_marker : marker:: PhantomData < T > ,
154
169
}
155
170
@@ -161,6 +176,7 @@ impl<'a, T> InstrumentBuilder<'a, T> {
161
176
name,
162
177
description : None ,
163
178
unit : None ,
179
+ cardinality_limit : None ,
164
180
_marker : marker:: PhantomData ,
165
181
}
166
182
}
@@ -182,6 +198,14 @@ impl<'a, T> InstrumentBuilder<'a, T> {
182
198
self . unit = Some ( unit. into ( ) ) ;
183
199
self
184
200
}
201
+
202
+ /// Set the cardinality limit for this instrument.
203
+ /// Setting cardinality limit is optional. By default, the limit will be set
204
+ /// to 2000.
205
+ pub fn with_cardinality_limit ( mut self , limit : usize ) -> Self {
206
+ self . cardinality_limit = Some ( limit) ;
207
+ self
208
+ }
185
209
}
186
210
187
211
macro_rules! build_instrument {
@@ -211,6 +235,7 @@ impl<T> fmt::Debug for InstrumentBuilder<'_, T> {
211
235
. field ( "name" , & self . name )
212
236
. field ( "description" , & self . description )
213
237
. field ( "unit" , & self . unit )
238
+ . field ( "cardinality_limit" , & self . cardinality_limit )
214
239
. field ( "kind" , & std:: any:: type_name :: < T > ( ) )
215
240
. finish ( )
216
241
}
@@ -222,6 +247,7 @@ impl<T> fmt::Debug for HistogramBuilder<'_, T> {
222
247
. field ( "name" , & self . name )
223
248
. field ( "description" , & self . description )
224
249
. field ( "unit" , & self . unit )
250
+ . field ( "cardinality_limit" , & self . cardinality_limit )
225
251
. field ( "boundaries" , & self . boundaries )
226
252
. field (
227
253
"kind" ,
@@ -255,6 +281,9 @@ pub struct AsyncInstrumentBuilder<'a, I, M> {
255
281
/// Unit of the instrument.
256
282
pub unit : Option < Cow < ' static , str > > ,
257
283
284
+ /// Cardinality limit for the instrument.
285
+ pub cardinality_limit : Option < usize > ,
286
+
258
287
/// Callbacks to be called for this instrument.
259
288
pub callbacks : Vec < Callback < M > > ,
260
289
@@ -269,6 +298,7 @@ impl<'a, I, M> AsyncInstrumentBuilder<'a, I, M> {
269
298
name,
270
299
description : None ,
271
300
unit : None ,
301
+ cardinality_limit : None ,
272
302
_inst : marker:: PhantomData ,
273
303
callbacks : Vec :: new ( ) ,
274
304
}
@@ -292,6 +322,14 @@ impl<'a, I, M> AsyncInstrumentBuilder<'a, I, M> {
292
322
self
293
323
}
294
324
325
+ /// Set the cardinality limit for this async instrument.
326
+ /// Setting cardinality limit is optional. By default, the limit will be set
327
+ /// to 2000.
328
+ pub fn with_cardinality_limit ( mut self , limit : usize ) -> Self {
329
+ self . cardinality_limit = Some ( limit) ;
330
+ self
331
+ }
332
+
295
333
/// Set the callback to be called for this instrument.
296
334
pub fn with_callback < F > ( mut self , callback : F ) -> Self
297
335
where
@@ -340,6 +378,7 @@ where
340
378
. field ( "name" , & self . name )
341
379
. field ( "description" , & self . description )
342
380
. field ( "unit" , & self . unit )
381
+ . field ( "cardinality_limit" , & self . cardinality_limit )
343
382
. field ( "kind" , & std:: any:: type_name :: < I > ( ) )
344
383
. field ( "callbacks_len" , & self . callbacks . len ( ) )
345
384
. finish ( )
0 commit comments