@@ -45,6 +45,9 @@ pub struct HistogramBuilder<'a, T> {
4545 /// Unit of the Histogram.
4646 pub unit : Option < Cow < ' static , str > > ,
4747
48+ /// Cardinality limit for the Histogram.
49+ pub cardinality_limit : Option < usize > ,
50+
4851 /// Bucket boundaries for the histogram.
4952 pub boundaries : Option < Vec < f64 > > ,
5053
@@ -60,6 +63,7 @@ impl<'a, T> HistogramBuilder<'a, T> {
6063 name,
6164 description : None ,
6265 unit : None ,
66+ cardinality_limit : None ,
6367 boundaries : None ,
6468 _marker : marker:: PhantomData ,
6569 }
@@ -83,6 +87,14 @@ impl<'a, T> HistogramBuilder<'a, T> {
8387 self
8488 }
8589
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+
8698 /// Set the boundaries for this histogram.
8799 ///
88100 /// Setting boundaries is optional. By default, the boundaries are set to:
@@ -150,6 +162,9 @@ pub struct InstrumentBuilder<'a, T> {
150162 /// Unit of the instrument.
151163 pub unit : Option < Cow < ' static , str > > ,
152164
165+ /// Cardinality limit for the instrument.
166+ pub cardinality_limit : Option < usize > ,
167+
153168 _marker : marker:: PhantomData < T > ,
154169}
155170
@@ -161,6 +176,7 @@ impl<'a, T> InstrumentBuilder<'a, T> {
161176 name,
162177 description : None ,
163178 unit : None ,
179+ cardinality_limit : None ,
164180 _marker : marker:: PhantomData ,
165181 }
166182 }
@@ -182,6 +198,14 @@ impl<'a, T> InstrumentBuilder<'a, T> {
182198 self . unit = Some ( unit. into ( ) ) ;
183199 self
184200 }
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+ }
185209}
186210
187211macro_rules! build_instrument {
@@ -211,6 +235,7 @@ impl<T> fmt::Debug for InstrumentBuilder<'_, T> {
211235 . field ( "name" , & self . name )
212236 . field ( "description" , & self . description )
213237 . field ( "unit" , & self . unit )
238+ . field ( "cardinality_limit" , & self . cardinality_limit )
214239 . field ( "kind" , & std:: any:: type_name :: < T > ( ) )
215240 . finish ( )
216241 }
@@ -222,6 +247,7 @@ impl<T> fmt::Debug for HistogramBuilder<'_, T> {
222247 . field ( "name" , & self . name )
223248 . field ( "description" , & self . description )
224249 . field ( "unit" , & self . unit )
250+ . field ( "cardinality_limit" , & self . cardinality_limit )
225251 . field ( "boundaries" , & self . boundaries )
226252 . field (
227253 "kind" ,
@@ -255,6 +281,9 @@ pub struct AsyncInstrumentBuilder<'a, I, M> {
255281 /// Unit of the instrument.
256282 pub unit : Option < Cow < ' static , str > > ,
257283
284+ /// Cardinality limit for the instrument.
285+ pub cardinality_limit : Option < usize > ,
286+
258287 /// Callbacks to be called for this instrument.
259288 pub callbacks : Vec < Callback < M > > ,
260289
@@ -269,6 +298,7 @@ impl<'a, I, M> AsyncInstrumentBuilder<'a, I, M> {
269298 name,
270299 description : None ,
271300 unit : None ,
301+ cardinality_limit : None ,
272302 _inst : marker:: PhantomData ,
273303 callbacks : Vec :: new ( ) ,
274304 }
@@ -292,6 +322,14 @@ impl<'a, I, M> AsyncInstrumentBuilder<'a, I, M> {
292322 self
293323 }
294324
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+
295333 /// Set the callback to be called for this instrument.
296334 pub fn with_callback < F > ( mut self , callback : F ) -> Self
297335 where
@@ -340,6 +378,7 @@ where
340378 . field ( "name" , & self . name )
341379 . field ( "description" , & self . description )
342380 . field ( "unit" , & self . unit )
381+ . field ( "cardinality_limit" , & self . cardinality_limit )
343382 . field ( "kind" , & std:: any:: type_name :: < I > ( ) )
344383 . field ( "callbacks_len" , & self . callbacks . len ( ) )
345384 . finish ( )
0 commit comments