diff --git a/serde/src/lib.rs b/serde/src/lib.rs index 54b0d408..6f53ed11 100644 --- a/serde/src/lib.rs +++ b/serde/src/lib.rs @@ -256,3 +256,9 @@ extern crate serde_derive; #[cfg(feature = "serde_derive")] #[cfg_attr(docsrs, doc(cfg(feature = "derive")))] pub use serde_derive::{Deserialize, Serialize}; + +#[macro_export] +#[doc(hidden)] +macro_rules! __require_serde_not_serde_core { + () => {}; +} diff --git a/serde_core/src/lib.rs b/serde_core/src/lib.rs index a409d286..e566bb50 100644 --- a/serde_core/src/lib.rs +++ b/serde_core/src/lib.rs @@ -266,3 +266,13 @@ mod seed; #[cfg(all(not(feature = "std"), no_core_error))] mod std_error; + +#[macro_export] +#[doc(hidden)] +macro_rules! __require_serde_not_serde_core { + () => { + ::core::compile_error!( + "Serde derive requires a dependency on the serde crate, not serde_core" + ); + }; +} diff --git a/serde_derive/src/dummy.rs b/serde_derive/src/dummy.rs index 8fd5494b..e0bca647 100644 --- a/serde_derive/src/dummy.rs +++ b/serde_derive/src/dummy.rs @@ -22,6 +22,9 @@ pub fn wrap_in_const(serde_path: Option<&syn::Path>, code: TokenStream) -> Token )] const _: () = { #use_serde + + _serde::__require_serde_not_serde_core!(); + #code }; }