#byte-stream #layer #writable #chunk #puts #read #overlay

memoverlay

Puts a writable layer of bytes over some byte stream

4 releases

new 0.1.3 Apr 12, 2024
0.1.2 Jan 2, 2023
0.1.1 Jan 2, 2023
0.1.0 Jan 2, 2023

#3 in #writable

Download history 14/week @ 2023-12-22 9/week @ 2023-12-29 14/week @ 2024-01-05 25/week @ 2024-01-12 14/week @ 2024-01-19 20/week @ 2024-01-26 69/week @ 2024-02-02 48/week @ 2024-02-09 37/week @ 2024-02-16 70/week @ 2024-02-23 51/week @ 2024-03-01 118/week @ 2024-03-08 56/week @ 2024-03-15 58/week @ 2024-03-22 91/week @ 2024-03-29 109/week @ 2024-04-05

326 downloads per month
Used in 4 crates (via nt_hive2)

GPL-3.0 license

25KB
520 lines

memoverlay

Puts a writable layer of bytes over some byte stream

memoverlay

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

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

Usage example

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

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

let mut message2 = String::new();
let _ = overlay.read_to_string(&mut message2).unwrap();

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

License: GPL-3.0

Dependencies

~290–750KB
~18K SLoC