[−][src]Crate bswp
Utilities for swapping bytes using patterns and masks.
Quick Start
Iterators
use bswp::pattern::{Pattern, Predicate, swap_iter}; let pattern = Pattern::new(0x42).with_mask(0xFF); // replace byte by 0x42 let predicate = Predicate::new().with_periodicity(2).with_offset(1); // replace odd bytes let swaps = &[(pattern, predicate)]; let source: [u8; 4] = [0x41, 0x41, 0x41, 0x41]; let swapped = swap_iter(&source, swaps); // iterator on result let swapped: Vec<u8> = swapped.collect(); assert_eq!(swapped, vec!(0x41, 0x42, 0x41, 0x42));
Mutating File-like Data
use std::io::Cursor; use bswp::pattern::{Pattern, Predicate}; use bswp::io::swap_io; // in memory reader (implements `Read`) let mut reader: Cursor<Vec<u8>> = Cursor::new(vec![0x41, 0x42, 0x43, 0x44]); // in memory writer (implements `Write`) let mut writer: Cursor<Vec<u8>> = Cursor::new(Vec::new()); let swaps: &[(Pattern, Predicate)] = &[(Pattern::new(0x42).with_mask(0xFF), Predicate::new().with_periodicity(2).with_offset(0))]; let swap = swap_io(&mut reader, &mut writer, swaps); assert!(swap.is_ok()); assert_eq!(swap.unwrap(), 4); // 4 bytes written assert_eq!(writer.into_inner(), vec![0x42, 0x42, 0x42, 0x44])
Modules
io | Byte swap IO utils (mut) |
pattern | Pattern, Predicate and iterator utils (pure) |
Constants
BUFFER_SIZE | default buffer size for io: 8KB |
Traits
BytePattern | Pattern on byte. |
PositionPredicate | Predicate on byte position. |