я нагуглил решение но насколько оно безопасно?
#[derive(Debug)]
struct MyNode {
f: [u8; 20],
s: SocketAddrV4,
}
#[derive(Debug)]
pub struct Test(Vec<MyNode>);
impl AsRef<[u8]> for Test {
fn as_ref(&self) -> &'_ [u8] {
unsafe {
core::slice::from_raw_parts(
(self.0.as_ptr() as *const Vec<MyNode>) as *const u8,
core::mem::size_of::<MyNode>() * self.0.len(),
)
}
}
}
fn main() {
let v = vec![MyNode {
f: [0; 20],
s: "1.2.3.4:0000".parse().unwrap(),
}];
dbg!(Test(v).as_ref());
}
шо это такое?) а deref не?
даже MyNode не обязательно имеет порядок f s, он может быть и s f и разные пустоты для выравниваний
Обсуждают сегодня