add write_bytes() test for a larger-than-u128 struct

This commit is contained in:
David Renshaw
2017-03-13 20:33:23 -04:00
parent e79ee140ee
commit 4cae50cccb
+28
View File
@@ -1,3 +1,11 @@
#[repr(C)]
#[derive(Copy, Clone)]
struct Foo {
a: u64,
b: u64,
c: u64,
}
fn main() {
const LENGTH: usize = 10;
let mut v: [u64; LENGTH] = [0; LENGTH];
@@ -14,4 +22,24 @@ fn main() {
for idx in 0..LENGTH {
assert_eq!(v[idx], 0xabababababababab);
}
// -----
let mut w: [Foo; LENGTH] = [Foo { a: 0, b: 0, c: 0 }; LENGTH];
for idx in 0..LENGTH {
assert_eq!(w[idx].a, 0);
assert_eq!(w[idx].b, 0);
assert_eq!(w[idx].c, 0);
}
unsafe {
let p = w.as_mut_ptr();
::std::ptr::write_bytes(p, 0xcd, LENGTH);
}
for idx in 0..LENGTH {
assert_eq!(w[idx].a, 0xcdcdcdcdcdcdcdcd);
assert_eq!(w[idx].b, 0xcdcdcdcdcdcdcdcd);
assert_eq!(w[idx].c, 0xcdcdcdcdcdcdcdcd);
}
}