Alexandre Courbot
2025-Apr-20 12:19 UTC
[PATCH 03/16] gpu: nova-core: derive useful traits for Chipset
We will commonly need to compare chipset versions, so derive the
ordering traits to make that possible. Also derive Copy and Clone since
passing Chipset by value will be more efficient than by reference.
Signed-off-by: Alexandre Courbot <acourbot at nvidia.com>
---
drivers/gpu/nova-core/gpu.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs
index
17c9660da45034762edaa78e372d8821144cdeb7..4de67a2dc16302c00530026156d7264cbc7e5b32
100644
--- a/drivers/gpu/nova-core/gpu.rs
+++ b/drivers/gpu/nova-core/gpu.rs
@@ -13,7 +13,7 @@ macro_rules! define_chipset {
({ $($variant:ident = $value:expr),* $(,)* }) =>
{
/// Enum representation of the GPU chipset.
- #[derive(fmt::Debug)]
+ #[derive(fmt::Debug, Copy, Clone, PartialOrd, Ord, PartialEq, Eq)]
pub(crate) enum Chipset {
$($variant = $value),*,
}
--
2.49.0
Joel Fernandes
2025-Apr-22 16:23 UTC
[PATCH 03/16] gpu: nova-core: derive useful traits for Chipset
On 4/20/2025 8:19 AM, Alexandre Courbot wrote:> We will commonly need to compare chipset versions, so derive the > ordering traits to make that possible. Also derive Copy and Clone since > passing Chipset by value will be more efficient than by reference. > > Signed-off-by: Alexandre Courbot <acourbot at nvidia.com> > --- > drivers/gpu/nova-core/gpu.rs | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs > index 17c9660da45034762edaa78e372d8821144cdeb7..4de67a2dc16302c00530026156d7264cbc7e5b32 100644 > --- a/drivers/gpu/nova-core/gpu.rs > +++ b/drivers/gpu/nova-core/gpu.rs > @@ -13,7 +13,7 @@ macro_rules! define_chipset { > ({ $($variant:ident = $value:expr),* $(,)* }) => > { > /// Enum representation of the GPU chipset. > - #[derive(fmt::Debug)] > + #[derive(fmt::Debug, Copy, Clone, PartialOrd, Ord, PartialEq, Eq)]Since Ord implies PartialOrd, do you need both? Same for Eq. Also under which scenario does Chipset require PartialOrd? thanks, - Joel> pub(crate) enum Chipset { > $($variant = $value),*, > } >
Alexandre Courbot
2025-Apr-24 07:50 UTC
[PATCH 03/16] gpu: nova-core: derive useful traits for Chipset
On Wed Apr 23, 2025 at 1:23 AM JST, Joel Fernandes wrote:> > > On 4/20/2025 8:19 AM, Alexandre Courbot wrote: >> We will commonly need to compare chipset versions, so derive the >> ordering traits to make that possible. Also derive Copy and Clone since >> passing Chipset by value will be more efficient than by reference. >> >> Signed-off-by: Alexandre Courbot <acourbot at nvidia.com> >> --- >> drivers/gpu/nova-core/gpu.rs | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/nova-core/gpu.rs b/drivers/gpu/nova-core/gpu.rs >> index 17c9660da45034762edaa78e372d8821144cdeb7..4de67a2dc16302c00530026156d7264cbc7e5b32 100644 >> --- a/drivers/gpu/nova-core/gpu.rs >> +++ b/drivers/gpu/nova-core/gpu.rs >> @@ -13,7 +13,7 @@ macro_rules! define_chipset { >> ({ $($variant:ident = $value:expr),* $(,)* }) => >> { >> /// Enum representation of the GPU chipset. >> - #[derive(fmt::Debug)] >> + #[derive(fmt::Debug, Copy, Clone, PartialOrd, Ord, PartialEq, Eq)] > > Since Ord implies PartialOrd, do you need both? Same for Eq.Ord does not imply PartialOrd, it requires it. It's a bit cumbersome but the compiler will throw an error if `Ord` is derived without `PartialOrd`. Same thing applies for `Eq`.