embassy-stm32

Crates

git

Versions

stm32h745zg-cm4

Flavors

embassy_stm32::eth

Struct PacketQueue

Source
pub struct PacketQueue<const TX: usize, const RX: usize> { /* private fields */ }
Expand description

Ethernet packet queue.

This struct owns the memory used for reading and writing packets.

TX is the number of packets in the transmit queue, RX in the receive queue. A bigger queue allows the hardware to receive more packets while the CPU is busy doing other things, which may increase performance (especially for RX) at the cost of more RAM usage.

Implementations§

Source§

impl<const TX: usize, const RX: usize> PacketQueue<TX, RX>

Source

pub const fn new() -> Self

Create a new packet queue.

Source

pub fn init(this: &mut MaybeUninit<Self>)

Initialize a packet queue in-place.

This can be helpful to avoid accidentally stack-allocating the packet queue in the stack. The Rust compiler can sometimes be a bit dumb when working with large owned values: if you call new() and then store the returned PacketQueue in its final place (like a static), the compiler might place it temporarily on the stack then move it. Since this struct is quite big, it may result in a stack overflow.

With this function, you can create an uninitialized static with type MaybeUninit<PacketQueue<...>> and initialize it in-place, guaranteeing no stack usage.

After calling this function, calling assume_init on the MaybeUninit is guaranteed safe.

Auto Trait Implementations§

§

impl<const TX: usize, const RX: usize> !Freeze for PacketQueue<TX, RX>

§

impl<const TX: usize, const RX: usize> !RefUnwindSafe for PacketQueue<TX, RX>

§

impl<const TX: usize, const RX: usize> Send for PacketQueue<TX, RX>

§

impl<const TX: usize, const RX: usize> !Sync for PacketQueue<TX, RX>

§

impl<const TX: usize, const RX: usize> Unpin for PacketQueue<TX, RX>

§

impl<const TX: usize, const RX: usize> UnwindSafe for PacketQueue<TX, RX>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.