Skip to content

Commit 79d531c

Browse files
committed
Feature gate the serde library
1 parent 2e3d864 commit 79d531c

File tree

5 files changed

+26
-23
lines changed

5 files changed

+26
-23
lines changed

packed_struct/Cargo.toml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,16 @@ categories = ["encoding"]
1212
readme = "../README.md"
1313

1414
[dependencies]
15-
serde_derive = "1.0"
16-
17-
[dependencies.serde]
18-
version = "1.0"
19-
default-features = false
20-
15+
serde = { version = "1.0", optional = true, default-features = false }
16+
serde_derive = { version = "1.0", optional = true }
2117

2218
[features]
2319
default = ["std"]
2420
std = ["serde/std"]
2521
alloc = []
2622
byte_types_64 = []
2723
byte_types_256 = []
24+
use_serde = ["serde", "serde_derive"]
2825

2926
# comment this section when publishing new releases to crates.io!
3027
[dev-dependencies]

packed_struct/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@
287287
extern crate alloc;
288288

289289

290+
#[cfg(feature = "use_serde")]
290291
extern crate serde;
292+
#[cfg(feature = "use_serde")]
291293
#[macro_use] extern crate serde_derive;
292294

293295
mod internal_prelude;

packed_struct/src/packing.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ pub trait PackedStructSlice where Self: Sized {
4141
}
4242
}
4343

44-
#[derive(Debug, Copy, Clone, PartialEq, Serialize)]
44+
#[cfg_attr(feature = "use_serde", derive(Serialize))]
45+
#[derive(Debug, Copy, Clone, PartialEq)]
4546
/// Packing errors that might occur during packing or unpacking
4647
pub enum PackingError {
4748
InvalidValue,

packed_struct/src/types_num.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,24 @@ impl<T, B> Display for Integer<T, B> where T: Display {
2828
}
2929
}
3030

31-
use serde::ser::{Serialize, Serializer};
32-
impl<T, B> Serialize for Integer<T, B> where T: Serialize {
33-
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
34-
where S: Serializer
35-
{
36-
self.num.serialize(serializer)
31+
#[cfg(feature = "use_serde")]
32+
mod serialize {
33+
34+
35+
impl<T, B> Serialize for Integer<T, B> where T: Serialize {
36+
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
37+
where S: Serializer
38+
{
39+
self.num.serialize(serializer)
40+
}
3741
}
38-
}
3942

40-
use serde::de::{Deserialize, Deserializer};
41-
impl<'de, T, B> Deserialize<'de> for Integer<T, B> where T: Deserialize<'de>, T: Into<Integer<T, B>> {
42-
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
43-
where D: Deserializer<'de>
44-
{
45-
<T>::deserialize(deserializer).map(|n| n.into())
43+
impl<'de, T, B> Deserialize<'de> for Integer<T, B> where T: Deserialize<'de>, T: Into<Integer<T, B>> {
44+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
45+
where D: Deserializer<'de>
46+
{
47+
<T>::deserialize(deserializer).map(|n| n.into())
48+
}
4649
}
4750
}
4851

packed_struct/src/types_reserved.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ pub trait ReservedBitValue {
1414
fn get_reserved_bit_value_byte() -> u8;
1515
}
1616

17-
#[derive(Default, Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
17+
#[cfg_attr(feature = "use_serde", derive(Serialize, Deserialize))]
1818
pub struct BitOne;
1919
impl ReservedBitValue for BitOne {
2020
fn get_reserved_bit_value_byte() -> u8 {
2121
0xFF
2222
}
2323
}
2424

25-
#[derive(Default, Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
25+
#[cfg_attr(feature = "use_serde", derive(Serialize, Deserialize))]
2626
pub struct BitZero;
2727
impl ReservedBitValue for BitZero {
2828
fn get_reserved_bit_value_byte() -> u8 {
@@ -31,7 +31,7 @@ impl ReservedBitValue for BitZero {
3131
}
3232

3333
/// Always packs into the associated bit value. Ignores the input when unpacking.
34-
#[derive(Default, Copy, Clone, PartialEq, Serialize, Deserialize)]
34+
#[cfg_attr(feature = "use_serde", derive(Serialize, Deserialize))]
3535
pub struct ReservedBits<V, B> {
3636
value: V,
3737
bits: PhantomData<B>

0 commit comments

Comments
 (0)