|
@@ -173,17 +173,12 @@ pub(crate) fn write(tag: u8, value: &[u8], buf: &mut [u8]) -> Option<NonZeroUsiz
|
|
|
Err(TryFromIntError { .. }) => None,
|
|
|
}?;
|
|
|
let mut size = 0;
|
|
|
- macro_rules! copy_from_slice {
|
|
|
- ($value:expr) => {{
|
|
|
- let buf = buf.get_mut(size..)?;
|
|
|
- let buf = buf.get_mut(..$value.len())?;
|
|
|
- buf.copy_from_slice($value);
|
|
|
- size += $value.len();
|
|
|
- }};
|
|
|
+ for slice in [&[tag][..], &wire_len.to_ne_bytes()[..], value] {
|
|
|
+ let buf = buf.get_mut(size..)?;
|
|
|
+ let buf = buf.get_mut(..slice.len())?;
|
|
|
+ buf.copy_from_slice(slice);
|
|
|
+ size += slice.len();
|
|
|
}
|
|
|
- copy_from_slice!(&[tag]);
|
|
|
- copy_from_slice!(&wire_len.to_ne_bytes());
|
|
|
- copy_from_slice!(value);
|
|
|
NonZeroUsize::new(size)
|
|
|
}
|
|
|
|
|
@@ -320,19 +315,18 @@ pub fn write_record_header(
|
|
|
) -> Option<NonZeroUsize> {
|
|
|
let level: u8 = level.into();
|
|
|
let mut size = 0;
|
|
|
- macro_rules! write {
|
|
|
- ($tag:expr, $value:expr) => {{
|
|
|
- let buf = buf.get_mut(size..)?;
|
|
|
- let len = write($tag.into(), $value, buf)?;
|
|
|
- size += len.get();
|
|
|
- }};
|
|
|
+ for (tag, value) in [
|
|
|
+ (RecordField::Target, target.as_bytes()),
|
|
|
+ (RecordField::Level, &level.to_ne_bytes()),
|
|
|
+ (RecordField::Module, module.as_bytes()),
|
|
|
+ (RecordField::File, file.as_bytes()),
|
|
|
+ (RecordField::Line, &line.to_ne_bytes()),
|
|
|
+ (RecordField::NumArgs, &num_args.to_ne_bytes()),
|
|
|
+ ] {
|
|
|
+ let buf = buf.get_mut(size..)?;
|
|
|
+ let len = write(tag.into(), value, buf)?;
|
|
|
+ size += len.get();
|
|
|
}
|
|
|
- write!(RecordField::Target, target.as_bytes());
|
|
|
- write!(RecordField::Level, &level.to_ne_bytes());
|
|
|
- write!(RecordField::Module, module.as_bytes());
|
|
|
- write!(RecordField::File, file.as_bytes());
|
|
|
- write!(RecordField::Line, &line.to_ne_bytes());
|
|
|
- write!(RecordField::NumArgs, &num_args.to_ne_bytes());
|
|
|
NonZeroUsize::new(size)
|
|
|
}
|
|
|
|