Skip to content

Commit b4698a2

Browse files
committed
Implement ByteValued for i128/u128
The only interesting thing in this commit is adjusting the unit test that tests these implementations, as u128/i128 can be aligned to 8 byte boundaries on x86. So only check that reading fails for values misaligned by 1 through 7 bytes. Signed-off-by: Patrick Roy <roypat@amazon.co.uk>
1 parent f93faad commit b4698a2

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/bytes.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,13 @@ byte_valued_type!(u8);
155155
byte_valued_type!(u16);
156156
byte_valued_type!(u32);
157157
byte_valued_type!(u64);
158+
byte_valued_type!(u128);
158159
byte_valued_type!(usize);
159160
byte_valued_type!(i8);
160161
byte_valued_type!(i16);
161162
byte_valued_type!(i32);
162163
byte_valued_type!(i64);
164+
byte_valued_type!(i128);
163165
byte_valued_type!(isize);
164166

165167
/// A trait used to identify types which can be accessed atomically by proxy.
@@ -362,7 +364,7 @@ pub(crate) mod tests {
362364
where
363365
T: ByteValued + PartialEq + Debug + Default,
364366
{
365-
let mut data = [0u8; 32];
367+
let mut data = [0u8; 48];
366368
let pre_len = {
367369
let (pre, _, _) = unsafe { data.align_to::<T>() };
368370
pre.len()
@@ -377,7 +379,7 @@ pub(crate) mod tests {
377379
assert_eq!(val.as_mut_slice(), aligned_data);
378380
}
379381
}
380-
for i in 1..size_of::<T>() {
382+
for i in 1..size_of::<T>().min(align_of::<T>()) {
381383
let begin = pre_len + i;
382384
let end = begin + size_of::<T>();
383385
let unaligned_data = &mut data[begin..end];
@@ -401,11 +403,13 @@ pub(crate) mod tests {
401403
check_byte_valued_type::<u16>();
402404
check_byte_valued_type::<u32>();
403405
check_byte_valued_type::<u64>();
406+
check_byte_valued_type::<u128>();
404407
check_byte_valued_type::<usize>();
405408
check_byte_valued_type::<i8>();
406409
check_byte_valued_type::<i16>();
407410
check_byte_valued_type::<i32>();
408411
check_byte_valued_type::<i64>();
412+
check_byte_valued_type::<i128>();
409413
check_byte_valued_type::<isize>();
410414
}
411415

0 commit comments

Comments
 (0)