Walk back on PartialEq/Eq (#2834)

This commit is contained in:
Dániel Buga 2024-12-19 10:00:35 +01:00 committed by GitHub
parent d4386adfc7
commit cde6169d6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 8 additions and 38 deletions

View File

@ -29,7 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- HAL configuration structs now implement the Builder Lite pattern (#2645) - HAL configuration structs now implement the Builder Lite pattern (#2645)
- Added `OutputOpenDrain::unlisten` (#2625) - Added `OutputOpenDrain::unlisten` (#2625)
- Added `{Input, Flex}::wait_for` (#2625) - Added `{Input, Flex}::wait_for` (#2625)
- Peripheral singletons now implement `Debug`, `PartialEq`, `defmt::Format` and `Eq` (except AnyPeripherals) (#2682) - Peripheral singletons now implement `Debug` and `defmt::Format` (except AnyPeripherals) (#2682, #2834)
- `BurstConfig`, a device-specific configuration for configuring DMA transfers in burst mode (#2543) - `BurstConfig`, a device-specific configuration for configuring DMA transfers in burst mode (#2543)
- `{DmaRxBuf, DmaTxBuf, DmaRxTxBuf}::set_burst_config` (#2543) - `{DmaRxBuf, DmaTxBuf, DmaRxTxBuf}::set_burst_config` (#2543)
- ESP32-S2: DMA support for AES (#2699) - ESP32-S2: DMA support for AES (#2699)

View File

@ -90,7 +90,7 @@ macro_rules! any_peripheral {
}) => { }) => {
paste::paste! { paste::paste! {
$(#[$meta])* $(#[$meta])*
#[derive(Debug, PartialEq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
$vis struct $name([< $name Inner >]); $vis struct $name([< $name Inner >]);
impl $crate::private::Sealed for $name {} impl $crate::private::Sealed for $name {}
@ -109,7 +109,7 @@ macro_rules! any_peripheral {
} }
$(#[$meta])* $(#[$meta])*
#[derive(Debug, PartialEq)] #[derive(Debug)]
enum [< $name Inner >] { enum [< $name Inner >] {
$( $(
$(#[cfg($variant_meta)])* $(#[cfg($variant_meta)])*
@ -129,36 +129,6 @@ macro_rules! any_peripheral {
} }
} }
$(
// Any == Specific
$(#[cfg($variant_meta)])*
impl PartialEq<$inner> for [< $name Inner >] {
fn eq(&self, _other: &$inner) -> bool {
matches!(self, [< $name Inner >]::$variant(_))
}
}
$(#[cfg($variant_meta)])*
impl PartialEq<$inner> for $name {
fn eq(&self, other: &$inner) -> bool {
&self.0 == other
}
}
// Specific == Any
$(#[cfg($variant_meta)])*
impl PartialEq<[< $name Inner >]> for $inner {
fn eq(&self, other: &[< $name Inner >]) -> bool {
other == self
}
}
$(#[cfg($variant_meta)])*
impl PartialEq<$name> for $inner {
fn eq(&self, other: &$name) -> bool {
other == self
}
}
)*
$( $(
$(#[cfg($variant_meta)])* $(#[cfg($variant_meta)])*
impl From<$inner> for $name { impl From<$inner> for $name {

View File

@ -18,7 +18,7 @@ use core::{
/// ///
/// but it is the size of `T` not the size /// but it is the size of `T` not the size
/// of a pointer. This is useful if T is a zero sized type. /// of a pointer. This is useful if T is a zero sized type.
#[derive(Debug, PartialEq, Eq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct PeripheralRef<'a, T> { pub struct PeripheralRef<'a, T> {
inner: T, inner: T,
@ -383,7 +383,7 @@ mod peripheral_macros {
/// Macro to create a peripheral structure. /// Macro to create a peripheral structure.
macro_rules! create_peripheral { macro_rules! create_peripheral {
($name:ident <= virtual) => { ($name:ident <= virtual) => {
#[derive(Debug, PartialEq, Eq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[non_exhaustive] #[non_exhaustive]
#[allow(non_camel_case_types)] #[allow(non_camel_case_types)]

View File

@ -459,7 +459,7 @@ impl Default for Config {
pub enum ConfigError {} pub enum ConfigError {}
/// SPI peripheral driver /// SPI peripheral driver
#[derive(Debug, PartialEq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Spi<'d, Dm, T = AnySpi> { pub struct Spi<'d, Dm, T = AnySpi> {
spi: PeripheralRef<'d, T>, spi: PeripheralRef<'d, T>,

View File

@ -265,7 +265,7 @@ impl Unit {
} }
/// An alarm unit /// An alarm unit
#[derive(Debug, PartialEq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Alarm { pub struct Alarm {
comp: u8, comp: u8,

View File

@ -366,7 +366,7 @@ impl Peripheral for Timer {
} }
/// A timer within a Timer Group. /// A timer within a Timer Group.
#[derive(Debug, PartialEq)] #[derive(Debug)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))] #[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Timer { pub struct Timer {
register_block: *const RegisterBlock, register_block: *const RegisterBlock,