refactor(metrics/histogram): 🎂 constructor accepts IntoIterator
#243
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
this is a very small, non-breaking, alteration to the signature of
Histogram
's constructor.rather than accepting an
impl Iterator
, this commit changes the parameter ofHistogram::new()
to be animpl IntoIterator
instead. this does not affect the existing contract because of the blanketimpl<I: Iterator> IntoIterator for I
implementation provided by the standard library.by accepting
IntoIterator
however, callers providing a collection such as a[f64; 5]
array or aVec<f64>
vector do not need to invokeinto_iter()
themselves at the call-site.this leans on the same sugar used by
for {}
loops, see the relevant section of thestd::iter
documentation here:https://doc.rust-lang.org/stable/std/iter/index.html#for-loops-and-intoiterator
no changes are needed within
Histogram::new()
because we already callinto_iter()
on the provider iterator when appendingf64::MAX
and collecting the buckets into aVec<_>
.