Skip to content

Commit 4cae50c

Browse files
author
David Renshaw
committed
add write_bytes() test for a larger-than-u128 struct
1 parent e79ee14 commit 4cae50c

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/run-pass/write-bytes.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
#[repr(C)]
2+
#[derive(Copy, Clone)]
3+
struct Foo {
4+
a: u64,
5+
b: u64,
6+
c: u64,
7+
}
8+
19
fn main() {
210
const LENGTH: usize = 10;
311
let mut v: [u64; LENGTH] = [0; LENGTH];
@@ -14,4 +22,24 @@ fn main() {
1422
for idx in 0..LENGTH {
1523
assert_eq!(v[idx], 0xabababababababab);
1624
}
25+
26+
// -----
27+
28+
let mut w: [Foo; LENGTH] = [Foo { a: 0, b: 0, c: 0 }; LENGTH];
29+
for idx in 0..LENGTH {
30+
assert_eq!(w[idx].a, 0);
31+
assert_eq!(w[idx].b, 0);
32+
assert_eq!(w[idx].c, 0);
33+
}
34+
35+
unsafe {
36+
let p = w.as_mut_ptr();
37+
::std::ptr::write_bytes(p, 0xcd, LENGTH);
38+
}
39+
40+
for idx in 0..LENGTH {
41+
assert_eq!(w[idx].a, 0xcdcdcdcdcdcdcdcd);
42+
assert_eq!(w[idx].b, 0xcdcdcdcdcdcdcdcd);
43+
assert_eq!(w[idx].c, 0xcdcdcdcdcdcdcdcd);
44+
}
1745
}

0 commit comments

Comments
 (0)