/// # 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
?
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Credits
/// # 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
?
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
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.