rocoder 0.3.0

A live-codeable phase vocoder
Documentation
use libc;
use std::mem;

#[inline]
pub fn zero_slice<T>(slc: &mut [T]) {
    unsafe {
        libc::memset(
            slc.as_mut_ptr() as *mut libc::c_void,
            0,
            mem::size_of::<T>() * slc.len(),
        );
    }
}

#[cfg(test)]
mod test {
    use super::*;
    use crate::test_utils::*;

    #[test]
    fn test_zero_slice_f32() {
        let mut v = vec![1.2, 3.4, 0.1];
        zero_slice(&mut v[0..2]);
        assert_almost_eq_by_element(v, vec![0.0, 0.0, 0.1]);
    }

    #[test]
    fn test_zero_slice_u64() {
        let mut v: Vec<u64> = vec![1, 2, 3];
        zero_slice(&mut v[1..3]);
        assert_eq!(v, vec![1, 0, 0]);
    }
}