Hi all,
I have a simple Rust function that exposed to C. I want to create a fixed size slice from a pointer in C. Here is the snippet:
#[no_mangle]
pub extern "C" fn handle_packet(pkt_ptr: *const u8, pkt_len: size_t) {
let packet: &[u8; 64] = unsafe {
assert!(!pkt_ptr.is_null());
assert!(pkt_len == 64);
slice::from_raw_parts(pkt_ptr, pkt_len as usize)
};
}
But I got the following error:
|
25 | slice::from_raw_parts(pkt_ptr, pkt_len as usize)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected array `[u8; 64]`, found slice `[u8]`
|
= note: expected reference `&[u8; 64]`
found reference `&[u8]`