byte_rb/
lib.rs

1//! Byte Ring Buffer
2//!
3//! The `byte_rb` crate defines a BrBuffer struct([`BrBuffer`](brb/struct.BrBuffer.html))
4//! which implements an intuitive and easy-to-use byte ring buffer.
5//! It internally allocates fixed length memory and performs memcpy.
6//! # Example
7//! ```rust
8//! use byte_rb::BrBuffer;
9//!
10//! let mut cbuf = BrBuffer::new(6);
11//!
12//! assert!(cbuf.append(6, b"123456").unwrap());
13//! assert_eq!(cbuf.rpos(), 0);
14//! assert_eq!(cbuf.wpos(), 6);
15//! // "123456"
16//!
17//! let result = cbuf.peek(3).unwrap();
18//! assert_eq!(result, b"123");
19//! assert_eq!(cbuf.cumulated_len(), 6);
20//!
21//! let result = cbuf.get(3).unwrap();
22//! assert_eq!(result, b"123");
23//! assert_eq!(cbuf.cumulated_len(), 3);
24//! assert_eq!(cbuf.rpos(), 3);
25//! assert_eq!(cbuf.wpos(), 6);
26//! // "  456"
27//!
28//! assert!(cbuf.append(3, b"789").unwrap());
29//! assert_eq!(cbuf.cumulated_len(), 6);
30//! assert_eq!(cbuf.rpos(), 3);
31//! assert_eq!(cbuf.wpos(), 3);
32//! // "789456"
33//!
34//! let result = cbuf.get(1).unwrap();
35//! assert_eq!(result, b"4");
36//! assert_eq!(cbuf.rpos(), 4);
37//! assert_eq!(cbuf.wpos(), 3);
38//! assert_eq!(cbuf.cumulated_len(), 5);
39//! // "789 56"
40//!
41//! let result = cbuf.get(5).unwrap();
42//! assert_eq!(result, b"56789");
43//! assert_eq!(cbuf.rpos(), 3);
44//! assert_eq!(cbuf.wpos(), 3);
45//! assert_eq!(cbuf.cumulated_len(), 0);
46//!
47//! assert_eq!(cbuf.capacity(), 6);
48//! ```
49
50pub use self::brb::BrBuffer;
51pub use self::brb::ERR_STR_BUFFER_FULL;
52pub use self::brb::ERR_STR_INVALID_LEN;
53
54pub mod brb;