From 98a63bc9fc837ae0c55fe3f99e705fc5dad06e2f Mon Sep 17 00:00:00 2001 From: Aeledfyr <45501007+Aeledfyr@users.noreply.github.com> Date: Fri, 31 Dec 2021 05:54:59 -0600 Subject: [PATCH] Remove derivative dependency (#67) --- num_enum/Cargo.toml | 1 - num_enum/src/lib.rs | 29 +++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/num_enum/Cargo.toml b/num_enum/Cargo.toml index c5f1fb4..ad8dd64 100644 --- a/num_enum/Cargo.toml +++ b/num_enum/Cargo.toml @@ -29,7 +29,6 @@ travis-ci = { repository = "illicitonion/num_enum", branch = "master" } maintenance = { status = "passively-maintained" } [dependencies] -derivative = { version = "2", features = ["use_core"] } num_enum_derive = { version = "0.5.5", path = "../num_enum_derive", default-features = false } [dev-dependencies] diff --git a/num_enum/src/lib.rs b/num_enum/src/lib.rs index 6ba762c..e349c52 100644 --- a/num_enum/src/lib.rs +++ b/num_enum/src/lib.rs @@ -27,18 +27,31 @@ pub trait TryFromPrimitive: Sized { fn try_from_primitive(number: Self::Primitive) -> Result>; } -#[derive(::derivative::Derivative)] -#[derivative( // use derivative to remove incorrect bound on `Enum` parameter. See https://github.com/rust-lang/rust/issues/26925 - Debug(bound = ""), - Clone(bound = ""), - Copy(bound = ""), - PartialEq(bound = ""), - Eq(bound = "") -)] pub struct TryFromPrimitiveError { pub number: Enum::Primitive, } +impl Copy for TryFromPrimitiveError {} +impl Clone for TryFromPrimitiveError { + fn clone(&self) -> Self { + TryFromPrimitiveError { + number: self.number, + } + } +} +impl Eq for TryFromPrimitiveError {} +impl PartialEq for TryFromPrimitiveError { + fn eq(&self, other: &Self) -> bool { + self.number == other.number + } +} +impl fmt::Debug for TryFromPrimitiveError { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + fmt.debug_struct("TryFromPrimitiveError") + .field("number", &self.number) + .finish() + } +} impl fmt::Display for TryFromPrimitiveError { fn fmt(&self, stream: &'_ mut fmt::Formatter<'_>) -> fmt::Result { write!(