pub trait DirectiveDefinition {
type ArgumentsDefinition: ArgumentsDefinition;
type DirectiveLocations: AsIter<Item = DirectiveLocation>;
// Required methods
fn description(&self) -> Option<&str>;
fn name(&self) -> &str;
fn arguments_definition(&self) -> Option<&Self::ArgumentsDefinition>;
fn is_repeatable(&self) -> bool;
fn locations(&self) -> &Self::DirectiveLocations;
fn is_builtin(&self) -> bool;
}