Replace macros with loops

reviewable/pr1288/r11
Tamir Duberstein 3 days ago
parent 87188f621a
commit 6a9ef2b43b
No known key found for this signature in database

@ -173,17 +173,12 @@ pub(crate) fn write(tag: u8, value: &[u8], buf: &mut [u8]) -> Option<NonZeroUsiz
Err(TryFromIntError { .. }) => None, Err(TryFromIntError { .. }) => None,
}?; }?;
let mut size = 0; let mut size = 0;
macro_rules! copy_from_slice { for slice in [&[tag][..], &wire_len.to_ne_bytes()[..], value] {
($value:expr) => {{
let buf = buf.get_mut(size..)?; let buf = buf.get_mut(size..)?;
let buf = buf.get_mut(..$value.len())?; let buf = buf.get_mut(..slice.len())?;
buf.copy_from_slice($value); buf.copy_from_slice(slice);
size += $value.len(); size += slice.len();
}};
} }
copy_from_slice!(&[tag]);
copy_from_slice!(&wire_len.to_ne_bytes());
copy_from_slice!(value);
NonZeroUsize::new(size) NonZeroUsize::new(size)
} }
@ -320,19 +315,18 @@ pub fn write_record_header(
) -> Option<NonZeroUsize> { ) -> Option<NonZeroUsize> {
let level: u8 = level.into(); let level: u8 = level.into();
let mut size = 0; let mut size = 0;
macro_rules! write { for (tag, value) in [
($tag:expr, $value:expr) => {{ (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 buf = buf.get_mut(size..)?;
let len = write($tag.into(), $value, buf)?; let len = write(tag.into(), value, buf)?;
size += len.get(); 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) NonZeroUsize::new(size)
} }

Loading…
Cancel
Save