/// # Panics
///
/// - if `samples.len()` does not match the `sample_count` passed to [Self::new]
/// - if there are `NaN`s in the sample slice
Since this is library code, why not make the function return a Result
?
/// # Panics
///
/// - if `samples.len()` does not match the `sample_count` passed to [Self::new]
/// - if there are `NaN`s in the sample slice
Since this is library code, why not make the function return a Result
?
Yup, libraries should usually let the consumer chose what to do with an error, not crash the program without a choice in the matter. The only real exception is performance critical low level code such as the core of a graphics or audio driver. Though in those cases crashing also often isn't an option, you just power through and hope things aren't too screwed up.
Thanks for the tip! Updated
The new version seems to fix that since your comment was written, but it will stil panics if less than 2 samples are provided, unless the crate it wraps panics at an earlier point.
let peak = buf
.iter()
.copied()
.enumerate()
.take(self.sample_count / 2)
.max_by_key(|(_, s)| (s.abs() * 1000.0) as u32)
.expect("to have at least 1 sample");
You should have mentioned OP.
@fil
Excellent catch! Added validation for the new
params
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Credits