Struct heapless::HistoryBuffer [−][src]
pub struct HistoryBuffer<T, const N: usize> { /* fields omitted */ }
Expand description
A “history buffer”, similar to a write-only ring buffer of fixed length.
This buffer keeps a fixed number of elements. On write, the oldest element is overwritten. Thus, the buffer is useful to keep a history of values with some desired depth, and for example calculate a rolling average.
Examples
use heapless::HistoryBuffer; // Initialize a new buffer with 8 elements. let mut buf = HistoryBuffer::<_, 8>::new(); // Starts with no data assert_eq!(buf.recent(), None); buf.write(3); buf.write(5); buf.extend(&[4, 4]); // The most recent written element is a four. assert_eq!(buf.recent(), Some(&4)); // To access all elements in an unspecified order, use `as_slice()`. for el in buf.as_slice() { println!("{:?}", el); } // Now we can prepare an average of all values, which comes out to 4. let avg = buf.as_slice().iter().sum::<usize>() / buf.len(); assert_eq!(avg, 4);
Implementations
Constructs a new history buffer.
The construction of a HistoryBuffer
works in const
contexts.
Examples
use heapless::HistoryBuffer; // Allocate a 16-element buffer on the stack let x: HistoryBuffer<u8, 16> = HistoryBuffer::new(); assert_eq!(x.len(), 0);
Constructs a new history buffer, where every element is the given value.
Examples
use heapless::HistoryBuffer; // Allocate a 16-element buffer on the stack let mut x: HistoryBuffer<u8, 16> = HistoryBuffer::new_with(4); // All elements are four assert_eq!(x.as_slice(), [4; 16]);
Clears the buffer, replacing every element with the given value.
Returns the capacity of the buffer, which is the length of the underlying backing array.
Clones and writes all elements in a slice to the buffer.
If the slice is longer than the buffer, only the last self.len()
elements will actually be stored.
Returns a reference to the most recently written value.
Examples
use heapless::HistoryBuffer; let mut x: HistoryBuffer<u8, 16> = HistoryBuffer::new(); x.write(4); x.write(10); assert_eq!(x.recent(), Some(&10));
Trait Implementations
Extends a collection with the contents of an iterator. Read more
extend_one
)Extends a collection with exactly one element.
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more
Extends a collection with the contents of an iterator. Read more
extend_one
)Extends a collection with exactly one element.
extend_one
)Reserves capacity in a collection for the given number of additional elements. Read more