Skip to content

Commit

Permalink
Switched to weak dependencies (#538)
Browse files Browse the repository at this point in the history
* Switched to weak dependencies

* Removed old `serde_impl` references

* Fixed CI and updated documentation

* Fixed a cfg for a test

* Removed unneeded package in Cargo.toml
  • Loading branch information
VictorKoenders authored May 21, 2022
1 parent 361d94a commit 6ec69a3
Show file tree
Hide file tree
Showing 10 changed files with 101 additions and 131 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,12 @@
"alloc,derive",
"std",
"std,derive",
"serde_no_std",
"serde_alloc",
"serde",
"serde_no_std,derive",
"serde_alloc,derive",
"serde,derive"
"alloc,serde",
"std,serde",
"serde,derive",
"alloc,serde,derive",
"std,serde,derive",
]
}
},
Expand Down
15 changes: 3 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,13 @@ edition = "2021"

[features]
default = ["std", "derive"]
std = ["alloc"]
alloc = []
std = ["alloc", "serde?/std"]
alloc = ["serde?/alloc"]
derive = ["bincode_derive"]

# BlockedTODO: https://github.com/rust-lang/cargo/issues/8832
# We want to enable these features automatically based on "alloc" or "std"
# std = ["alloc", "serde?/std"]
# alloc = ["serde?/alloc"]
# now we have to do this hack:
serde = ["serde_incl/std", "std", "serde_alloc"] # std
serde_alloc = ["serde_incl/alloc", "alloc"] # alloc
serde_no_std = ["serde_incl"] # no_std

[dependencies]
bincode_derive = { path = "derive", version = "2.0.0-rc.1", optional = true }
serde_incl = { package = "serde", version = "1.0", default-features = false, optional = true }
serde = { version = "1.0", default-features = false, optional = true }

# Used for tests
[dev-dependencies]
Expand Down
72 changes: 36 additions & 36 deletions src/features/serde/de_borrowed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use crate::{
error::DecodeError,
};
use core::marker::PhantomData;
use serde_incl::de::*;
use serde::de::*;

/// Decode a borrowed type from the given slice. Some parts of the decoded type are expected to be referring to the given slice
pub fn decode_borrowed_from_slice<'de, T, C>(slice: &'de [u8], config: C) -> Result<T, DecodeError>
Expand Down Expand Up @@ -35,116 +35,116 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de

fn deserialize_any<V>(self, _: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
Err(SerdeDecodeError::AnyNotSupported.into())
}

fn deserialize_bool<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_bool(Decode::decode(&mut self.de)?)
}

fn deserialize_i8<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_i8(Decode::decode(&mut self.de)?)
}

fn deserialize_i16<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_i16(Decode::decode(&mut self.de)?)
}

fn deserialize_i32<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_i32(Decode::decode(&mut self.de)?)
}

fn deserialize_i64<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_i64(Decode::decode(&mut self.de)?)
}

serde_incl::serde_if_integer128! {
serde::serde_if_integer128! {
fn deserialize_i128<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_i128(Decode::decode(&mut self.de)?)
}
}

fn deserialize_u8<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_u8(Decode::decode(&mut self.de)?)
}

fn deserialize_u16<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_u16(Decode::decode(&mut self.de)?)
}

fn deserialize_u32<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_u32(Decode::decode(&mut self.de)?)
}

fn deserialize_u64<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_u64(Decode::decode(&mut self.de)?)
}

serde_incl::serde_if_integer128! {
serde::serde_if_integer128! {
fn deserialize_u128<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_u128(Decode::decode(&mut self.de)?)
}
}

fn deserialize_f32<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_f32(Decode::decode(&mut self.de)?)
}

fn deserialize_f64<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_f64(Decode::decode(&mut self.de)?)
}

fn deserialize_char<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_char(Decode::decode(&mut self.de)?)
}

fn deserialize_str<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
let str = <&'de str>::borrow_decode(&mut self.de)?;
visitor.visit_borrowed_str(str)
Expand All @@ -153,22 +153,22 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
#[cfg(not(feature = "alloc"))]
fn deserialize_string<V>(self, _: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
Err(SerdeDecodeError::CannotBorrowOwnedData.into())
}

#[cfg(feature = "alloc")]
fn deserialize_string<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_string(Decode::decode(&mut self.de)?)
}

fn deserialize_bytes<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
let bytes = <&'de [u8]>::borrow_decode(&mut self.de)?;
visitor.visit_borrowed_bytes(bytes)
Expand All @@ -177,22 +177,22 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
#[cfg(not(feature = "alloc"))]
fn deserialize_byte_buf<V>(self, _: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
Err(SerdeDecodeError::CannotBorrowOwnedData.into())
}

#[cfg(feature = "alloc")]
fn deserialize_byte_buf<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_byte_buf(Decode::decode(&mut self.de)?)
}

fn deserialize_option<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
let variant = crate::de::decode_option_variant(&mut self.de, "Option<T>")?;
if variant.is_some() {
Expand All @@ -204,7 +204,7 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de

fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_unit()
}
Expand All @@ -215,7 +215,7 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
visitor: V,
) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_unit()
}
Expand All @@ -226,22 +226,22 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
visitor: V,
) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_newtype_struct(self)
}

fn deserialize_seq<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
let len = usize::decode(&mut self.de)?;
self.deserialize_tuple(len, visitor)
}

fn deserialize_tuple<V>(mut self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
struct Access<'a, 'b, 'de, DE: BorrowDecoder<'de>> {
deserializer: &'a mut SerdeDecoder<'b, 'de, DE>,
Expand Down Expand Up @@ -288,14 +288,14 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
visitor: V,
) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
self.deserialize_tuple(len, visitor)
}

fn deserialize_map<V>(mut self, visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
struct Access<'a, 'b, 'de, DE: BorrowDecoder<'de>> {
deserializer: &'a mut SerdeDecoder<'b, 'de, DE>,
Expand Down Expand Up @@ -358,7 +358,7 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
visitor: V,
) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
self.deserialize_tuple(fields.len(), visitor)
}
Expand All @@ -370,21 +370,21 @@ impl<'a, 'de, DE: BorrowDecoder<'de>> Deserializer<'de> for SerdeDecoder<'a, 'de
visitor: V,
) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
visitor.visit_enum(self)
}

fn deserialize_identifier<V>(self, _visitor: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
Err(SerdeDecodeError::IdentifierNotSupported.into())
}

fn deserialize_ignored_any<V>(self, _: V) -> Result<V::Value, Self::Error>
where
V: serde_incl::de::Visitor<'de>,
V: serde::de::Visitor<'de>,
{
Err(SerdeDecodeError::IgnoredAnyNotSupported.into())
}
Expand Down
Loading

0 comments on commit 6ec69a3

Please sign in to comment.