This PR makes the serde derives emitted by #[derive(GraphQLQuery)] use a private re-export of the serde crate instead of relying on users of this crate having added serde to their Cargo.toml.
Serde allows you to add an annotation
#[serde(crate = "<path to crate>")]
for exactly this reason so most of this PR is just plumbing the correct path through the codegen crate to the correct annotation.
Details
There is a new #[doc(hidden)] mod _private declaration in the graphql_client crate. All re-exports (which is just serde) have been placed there.
I have added a new serde_path field to GraphQLCodegenOptions which defaults to ::serde. This means that the code generated by the CLI should remain effectively unchanged.
The rest is just applying #[serde(crate = ...)] annotations where appropriate.
This PR makes the serde derives emitted by
#[derive(GraphQLQuery)]
use a private re-export of the serde crate instead of relying on users of this crate having added serde to theirCargo.toml
.Serde allows you to add an annotation
for exactly this reason so most of this PR is just plumbing the correct path through the codegen crate to the correct annotation.
Details
#[doc(hidden)] mod _private
declaration in thegraphql_client
crate. All re-exports (which is just serde) have been placed there.serde_path
field toGraphQLCodegenOptions
which defaults to::serde
. This means that the code generated by the CLI should remain effectively unchanged.#[serde(crate = ...)]
annotations where appropriate.Fixes #427