Pārlūkot izejas kodu

Replace macros with loops

Tamir Duberstein 6 dienas atpakaļ
vecāks
revīzija
6a9ef2b43b
1 mainītis faili ar 16 papildinājumiem un 22 dzēšanām
  1. 16 22
      aya-log-common/src/lib.rs

+ 16 - 22
aya-log-common/src/lib.rs

@@ -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)
 }