You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
801 B
30 lines
801 B
use std::ptr;
|
|
|
|
/// Copy slice of bytes only
|
|
///
|
|
/// # Notes
|
|
/// `dst` and `src` must not overlap. See [move_slice].
|
|
pub fn copy_slice(dst: &mut [u8], src: &[u8]) -> usize
|
|
{
|
|
let sz = std::cmp::min(dst.len(),src.len());
|
|
unsafe {
|
|
//libc::memcpy(&mut dst[0] as *mut u8 as *mut c_void, &src[0] as *const u8 as *const c_void, sz);
|
|
ptr::copy_nonoverlapping(&src[0] as *const u8, &mut dst[0] as *mut u8, sz);
|
|
}
|
|
sz
|
|
}
|
|
|
|
/// Move slice of bytes only
|
|
///
|
|
/// # Notes
|
|
/// `dst` and `src` can overlap.
|
|
pub fn move_slice(dst: &mut [u8], src: &[u8]) -> usize
|
|
{
|
|
let sz = std::cmp::min(dst.len(),src.len());
|
|
unsafe {
|
|
//libc::memmove(&mut dst[0] as *mut u8 as *mut c_void, &src[0] as *const u8 as *const c_void, sz);
|
|
ptr::copy(&src[0] as *const u8, &mut dst[0] as *mut u8, sz);
|
|
}
|
|
sz
|
|
}
|