async_fifo/channel/
blocking.rs

1use super::{Receiver, Closed};
2use crate::block_on;
3use alloc::vec::Vec;
4
5/// These methods are only available if you enable the `blocking` feature.
6impl<T: Unpin> Receiver<T> {
7    /// Receives one item, blocking.
8    pub fn recv_blocking(&mut self) -> Result<T, Closed> {
9        block_on(self.recv())
10    }
11
12    /// Receives exactly `N` items into an array, blocking.
13    pub fn recv_array_blocking<const N: usize>(&mut self) -> Result<[T; N], Closed> {
14        block_on(self.recv_array())
15    }
16
17    /// Receives as many items as possible, into a vector, blocking.
18    pub fn recv_many_blocking(&mut self, vec: &mut Vec<T>) -> Result<usize, Closed> {
19        block_on(self.recv_many(vec))
20    }
21
22    /// Receives exactly `slice.len()` items into a slice, blocking.
23    pub fn recv_exact_blocking(&mut self, slice: &mut [T]) -> Result<usize, Closed> {
24        block_on(self.recv_exact(slice))
25    }
26}