Documentation | Crate | GitHub
The graphql_tools crate implements tooling around GraphQL for Rust libraries. Most of the tools are based on traits and structs implemented in graphql_parser crate.
The goal of this library is to create a common layer of tools that has similar/improved APIs to graphql-js reference implementation and graphql-tools from the JS/TS ecosystem.
Add graphql-tools as a dependency of your project by adding the following to your Cargo.toml file:
[dependencies]
graphql-tools = "..."Or, if you are using cargo-edit:
cargo add graphql-tools
By default, this crate is using the graphql-parser library for parsing. If you wish to use an alternative implementation such as graphql-hive/graphql-parser-hive-fork, use the following features setup:
[dependencies]
graphql-tools = { version = "...", features = "graphql_parser_fork", default-features = false }This comparison is based on
graphql-jsreference implementation.
- ExecutableDefinitions (not actually needed)
- UniqueOperationNames
- LoneAnonymousOperation
- SingleFieldSubscriptions
- KnownTypeNames
- FragmentsOnCompositeTypes
- VariablesAreInputTypes
- LeafFieldSelections
- FieldsOnCorrectType
- UniqueFragmentNames
- KnownFragmentNames
- NoUnusedFragments
- PossibleFragmentSpreads
- NoFragmentCycles
- UniqueVariableNames
- NoUndefinedVariables
- NoUnusedVariables
- KnownDirectives
- UniqueDirectivesPerLocation
- KnownArgumentNames
- UniqueArgumentNames
- ValuesOfCorrectType
- ProvidedRequiredArguments
- VariablesInAllowedPosition
- OverlappingFieldsCanBeMerged
- UniqueInputFieldNames (blocked by graphql-rust/graphql-parser#59)