1
2
3
4
5
6
7
8
9
10
11
12
use crate::definition::{InterfaceTypeDefinition, SchemaDefinition};

pub trait InterfaceImplementation {
    type InterfaceTypeDefinition: InterfaceTypeDefinition;

    fn interface<'a, S: SchemaDefinition<InterfaceTypeDefinition = Self::InterfaceTypeDefinition>>(
        &'a self,
        schema_definition: &'a S,
    ) -> &'a Self::InterfaceTypeDefinition;

    fn name(&self) -> &str;
}