diff --git a/embassy-stm32/src/eth/mod.rs b/embassy-stm32/src/eth/mod.rs index 9b500bfd6..04c74e605 100644 --- a/embassy-stm32/src/eth/mod.rs +++ b/embassy-stm32/src/eth/mod.rs @@ -30,13 +30,24 @@ pub struct PacketQueue { impl PacketQueue { pub const fn new() -> Self { - const NEW_TDES: TDes = TDes::new(); - const NEW_RDES: RDes = RDes::new(); - Self { - tx_desc: [NEW_TDES; TX], - rx_desc: [NEW_RDES; RX], - tx_buf: [Packet([0; TX_BUFFER_SIZE]); TX], - rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], + #[cfg(feature = "nightly")] + { + let mut this = core::mem::MaybeUninit::uninit(); + unsafe { + Self::init(&mut this); + this.assume_init() + } + } + #[cfg(not(feature = "nightly"))] + { + const NEW_TDES: TDes = TDes::new(); + const NEW_RDES: RDes = RDes::new(); + Self { + tx_desc: [NEW_TDES; TX], + rx_desc: [NEW_RDES; RX], + tx_buf: [Packet([0; TX_BUFFER_SIZE]); TX], + rx_buf: [Packet([0; RX_BUFFER_SIZE]); RX], + } } }