@@ -123,6 +123,23 @@ impl<A: Ord> Edges<A> {
123123 self . edges . len ( )
124124 }
125125
126+ /// Returns `true` if `self` contains no edges.
127+ ///
128+ /// # Example:
129+ ///
130+ /// ```
131+ /// use ndarray_stats::histogram::Edges;
132+ /// use noisy_float::types::{N64, n64};
133+ ///
134+ /// let edges = Edges::<N64>::from(vec![]);
135+ /// assert_eq!(edges.is_empty(), true);
136+ /// let edges = Edges::from(vec![n64(0.), n64(2.), n64(5.)]);
137+ /// assert_eq!(edges.is_empty(), false);
138+ /// ```
139+ pub fn is_empty ( & self ) -> bool {
140+ self . edges . is_empty ( )
141+ }
142+
126143 /// Borrow an immutable reference to the edges as a 1-dimensional
127144 /// array view.
128145 ///
@@ -240,6 +257,29 @@ impl<A: Ord> Bins<A> {
240257 }
241258 }
242259
260+ /// Returns `true` if the number of bins is zero, or in other words, if the
261+ /// number of edges is 0 or 1.
262+ ///
263+ /// # Example:
264+ ///
265+ /// ```
266+ /// use ndarray_stats::histogram::{Edges, Bins};
267+ /// use noisy_float::types::{N64, n64};
268+ ///
269+ /// let edges = Edges::<N64>::from(vec![]);
270+ /// let bins = Bins::new(edges);
271+ /// assert_eq!(bins.is_empty(), true);
272+ /// let edges = Edges::from(vec![n64(0.)]);
273+ /// let bins = Bins::new(edges);
274+ /// assert_eq!(bins.is_empty(), true);
275+ /// let edges = Edges::from(vec![n64(0.), n64(1.), n64(3.)]);
276+ /// let bins = Bins::new(edges);
277+ /// assert_eq!(bins.is_empty(), false);
278+ /// ```
279+ pub fn is_empty ( & self ) -> bool {
280+ self . len ( ) == 0
281+ }
282+
243283 /// Given `value`, it returns:
244284 /// - `Some(i)`, if the `i`-th bin in `self` contains `value`;
245285 /// - `None`, if `value` does not belong to any of the bins in `self`.
0 commit comments