From 1aebef2c020a34ad0f85f19b11abe7054de23d87 Mon Sep 17 00:00:00 2001 From: Nathan Fisher Date: Thu, 8 Feb 2024 18:54:44 -0500 Subject: [PATCH] Make `serde` optional --- Cargo.toml | 4 +++- src/arch.rs | 7 +++++-- src/prerelease.rs | 7 +++++-- src/version.rs | 10 +++++++--- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 986b573..a834c6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,10 @@ version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +serde = ["dep:serde"] [dependencies] chrono = { version = "0.4", features = ["serde"] } epoch = { git = "https://git.hitchhiker-linux.org/jeang3nie/epoch-rs.git", features = ["serde"] } -serde = { version = "1.0", features = ["derive"] } +serde = { version = "1.0", features = ["derive"], optional = true } diff --git a/src/arch.rs b/src/arch.rs index 5e5c303..32c3f65 100644 --- a/src/arch.rs +++ b/src/arch.rs @@ -1,10 +1,13 @@ +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + use { crate::error::Error, - serde::{Deserialize, Serialize}, std::{fmt, str}, }; -#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] /// Represents the processor architecture the software is compiled for pub enum Arch { Any, diff --git a/src/prerelease.rs b/src/prerelease.rs index 68d55b0..bd91a9a 100644 --- a/src/prerelease.rs +++ b/src/prerelease.rs @@ -1,11 +1,14 @@ +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + use { crate::{error::Error, MAX_U12}, epoch::DateTime, - serde::{Deserialize, Serialize}, std::{cmp, convert::Into, fmt, num::NonZeroU16, str}, }; -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug)] +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] /// A specification for non-production releases pub enum PreRelease { Alpha(Option), diff --git a/src/version.rs b/src/version.rs index 93df31a..ffd90a3 100644 --- a/src/version.rs +++ b/src/version.rs @@ -1,10 +1,13 @@ +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + use { crate::{arch::Arch, error::Error, prerelease::PreRelease, MAX_U12}, - serde::{Deserialize, Serialize}, std::{cmp, fmt, str}, }; -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug)] +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] pub enum Kind { Simple { major: u16, @@ -26,7 +29,8 @@ pub enum Kind { }, } -#[derive(Clone, Copy, Debug, Deserialize, Serialize)] +#[derive(Clone, Copy, Debug)] +#[cfg_attr(feature = "serde", derive(Deserialize, Serialize))] pub struct Version { pub kind: Kind, pub pre: PreRelease,