use std::marker::PhantomData;
#[derive(Debug, Clone, Copy)]
pub enum VariableType {
List(&'static VariableType),
Nullable(&'static VariableType),
Named(&'static str),
}
pub trait QueryVariables {
type Fields: QueryVariablesFields;
const VARIABLES: &'static [(&'static str, VariableType)];
}
pub trait QueryVariablesFields {}
impl QueryVariables for () {
type Fields = ();
const VARIABLES: &'static [(&'static str, VariableType)] = &[];
}
impl QueryVariablesFields for () {}
#[doc(hidden)]
pub struct VariableDefinition<Variables, Type> {
pub name: &'static str,
phantom: PhantomData<fn() -> (Variables, Type)>,
}
impl<Variables, Type> VariableDefinition<Variables, Type> {
pub fn new(name: &'static str) -> Self {
VariableDefinition {
name,
phantom: PhantomData,
}
}
}