mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-31 13:40:15 +03:00
add write_bytes() test for a larger-than-u128 struct
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user