typhoon-protocol 0.1.0

A sample implementation of TYPHOON protocol
Documentation
#[cfg(test)]
#[path = "../../tests/bytes/utils.rs"]
mod tests;

use std::ptr::copy_nonoverlapping;

pub(crate) fn preserve_vector(vector: Vec<u8>) -> *mut u8 {
    vector.leak().as_mut_ptr()
}

pub(crate) fn allocate_ptr(size: usize) -> *mut u8 {
    preserve_vector(vec![0u8; size])
}

pub(crate) fn copy_slice(ptr: *mut u8, slice: &[u8]) {
    unsafe {
        copy_nonoverlapping(slice.as_ptr(), ptr, slice.len());
    }
}

pub(crate) fn free_ptr(ptr: *mut u8, length: usize) {
    let vector = unsafe { Vec::<u8>::from_raw_parts(ptr, length, length) };
    drop(vector);
}