In many logging scenarios, it is often useful to limit the logs to some maximum size while keeping only the most recent content. A common approach is to use a fixed-size circular buffer, where more space can be made for new content by deleting old content.
This crate supports one principle type, [StringRing], which is a circular buffer for UTF-8 encoded strings.
Multiple [Granularity] modes are supported for various applications, which control how old content is removed.
Examples
The following is an example of the basic [Granularity::Character] mode:
# use *;
// example of a 16-byte circular string buffer
let mut buf = new;
buf.push;
assert_eq!;
buf.push;
assert_eq!;
The following is an example of the [Granularity::Line] mode, which is often more useful for logging:
# use *;
// example of a 26-byte circular string buffer
let mut buf = new;
buf.push;
assert_eq!;
buf.push;
assert_eq!;
buf.push;
assert_eq!;
no-std
This crate supports building in no-std environments by disabling default features:
[]
= { = "...", = false }
Note that the alloc crate is still required in this case,
as there is not currently a heapless version of [StringRing].