diff options
Diffstat (limited to 'src/util.rs')
| -rw-r--r-- | src/util.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/util.rs b/src/util.rs index 809287f..48ab55e 100644 --- a/src/util.rs +++ b/src/util.rs @@ -13,3 +13,30 @@ macro_rules! parse_match { }; }; } + +#[macro_export] +macro_rules! match_variant { + ( $values:expr, $x:path, $field:expr ) => { + match &$values[$field] { + $x(x) => { Ok(x.clone()) }, + _ => { Err("") } + }.unwrap(); + } +} + +pub fn prepend_byte_len(buf: &mut Vec<u8>) { + use std::convert::TryInto; + let len: i32 = buf.len().try_into().unwrap(); + let ulen: &[u8] = &len.to_be_bytes(); + buf.insert(0, ulen[3]); + buf.insert(0, ulen[2]); + buf.insert(0, ulen[1]); + buf.insert(0, ulen[0]); +} + +pub fn insert_bytes(pos: usize, buf: &mut Vec<u8>, input: &mut [u8]) { + input.reverse(); + for i in input { + buf.insert(pos, *i) + } +} |
