From 5b72410828309bd0d37c8f85c0fb4f88d2a105f8 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Mon, 19 Dec 2022 01:16:41 +0100 Subject: [PATCH] hal-common/atomic_ring_buffer: Add push_slice, pop_slice. --- embassy-hal-common/src/atomic_ring_buffer.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/embassy-hal-common/src/atomic_ring_buffer.rs b/embassy-hal-common/src/atomic_ring_buffer.rs index 3e90b087..a8a6a216 100644 --- a/embassy-hal-common/src/atomic_ring_buffer.rs +++ b/embassy-hal-common/src/atomic_ring_buffer.rs @@ -135,6 +135,14 @@ impl<'a> Writer<'a> { n != 0 } + /// Get a buffer where data can be pushed to. + /// + /// Equivalent to [`Self::push_buf`] but returns a slice. + pub fn push_slice(&mut self) -> &mut [u8] { + let (data, len) = self.push_buf(); + unsafe { slice::from_raw_parts_mut(data, len) } + } + /// Get a buffer where data can be pushed to. /// /// Write data to the start of the buffer, then call `push_done` with @@ -204,6 +212,14 @@ impl<'a> Reader<'a> { res } + /// Get a buffer where data can be popped from. + /// + /// Equivalent to [`Self::pop_buf`] but returns a slice. + pub fn pop_slice(&mut self) -> &mut [u8] { + let (data, len) = self.pop_buf(); + unsafe { slice::from_raw_parts_mut(data, len) } + } + /// Get a buffer where data can be popped from. /// /// Read data from the start of the buffer, then call `pop_done` with