graphql-client
graphql-client copied to clipboard
Allow using `#[derive(GraphQLQuery)]` without depending on serde
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 _privatedeclaration in thegraphql_clientcrate. All re-exports (which is just serde) have been placed there. - I have added a new
serde_pathfield toGraphQLCodegenOptionswhich 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.
Fixes #427