memoverlay

Puts a writable layer of bytes over some byte stream

memoverlay

```txt +-----------------+------------+-----------------+-------+----------------------+-------+-----------------+ | chunk 0 | chunk 1 | chunk 2 | 3 | chunk 4 | 5 | chunk 6 | +-----------------+------------+-----------------+-------+----------------------+-------+-----------------+

                           +-----------------+       +----------------------+
                           +-----------------+       +----------------------+
              +-------------------+                           +---------------------+
              +-------------------+                           +---------------------+

+---------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------------------------------------------------------+ ```

Usage example

```rust use std::io::{Cursor, Read, Seek, SeekFrom}; use memoverlay::MemOverlay; use memoverlay::overlay;

let message1 = "hello, world!"; let mut overlay = overlay!(message1.asbytes()); overlay.addbytesat(7, "peter".asbytes()).unwrap();

let mut message2 = String::new(); let _ = overlay.readtostring(&mut message2).unwrap(); overlay.seek(SeekFrom::Start(0)).unwrap();

assert_eq!(message2, "hello, peter!");

overlay.addbytesat(1, "a".asbytes()).unwrap(); let mut message3 = String::new(); let _ = overlay.readtostring(&mut message3).unwrap(); overlay.seek(SeekFrom::Start(0)).unwrap(); asserteq!(message3, "hallo, peter!");

overlay.addbytesat(1, "o".asbytes()).unwrap(); overlay.addbytesat(5, "w".asbytes()).unwrap(); let mut message4 = String::new(); let _ = overlay.readtostring(&mut message4).unwrap(); assert_eq!(message4, "hollow peter!"); ```