dynamic-graphql-derive 0.10.2

Dynamic GraphQL schema macro
Documentation
---
source: derive/src/args/test_output.rs
expression: output
---
```rust
trait Node {
    fn id(&self) -> String;
}


impl dynamic_graphql::internal::TypeName for dyn Node {
    fn get_type_name() -> std::borrow::Cow<'static, str> {
        "Node".into()
    }
}
impl dynamic_graphql::internal::OutputTypeName for dyn Node {}
impl dynamic_graphql::internal::Interface for dyn Node {}
impl dynamic_graphql::internal::Register for dyn Node {
    fn register(
        registry: dynamic_graphql::internal::Registry,
    ) -> dynamic_graphql::internal::Registry {
        let registry = registry.register::<String>();
        let object = dynamic_graphql::dynamic::Interface::new(
            <Self as dynamic_graphql::internal::Interface>::get_interface_type_name()
                .as_ref(),
        );
        let field = dynamic_graphql::dynamic::InterfaceField::new(
            "id",
            <String as dynamic_graphql::internal::GetOutputTypeRef>::get_output_type_ref(),
        );
        let object = object.field(field);
        registry.register_type(object)
    }
}
impl<T> dynamic_graphql::internal::RegisterInstance<dyn Node, T> for dyn Node
where
    T: Node + dynamic_graphql::internal::Object + 'static,
    T: Send + Sync,
{
    fn register_instance(
        registry: dynamic_graphql::internal::Registry,
    ) -> dynamic_graphql::internal::Registry {
        let field = dynamic_graphql::dynamic::Field::new(
            "id",
            <String as dynamic_graphql::internal::GetOutputTypeRef>::get_output_type_ref(),
            |ctx| {
                dynamic_graphql::dynamic::FieldFuture::new(async move {
                    let parent = ctx.parent_value.try_downcast_ref::<T>()?;
                    let arg0 = parent;
                    let value = T::id(arg0);
                    dynamic_graphql::internal::Resolve::resolve(value, &ctx)
                })
            },
        );
        let __field_0 = field;
        registry
            .update_object(
                <T as dynamic_graphql::internal::Object>::get_object_type_name()
                    .as_ref(),
                <dyn Node as dynamic_graphql::internal::Interface>::get_interface_type_name()
                    .as_ref(),
                |object| {
                    let object = object.field(__field_0);
                    let object = object
                        .implement(
                            <dyn Node as dynamic_graphql::internal::Interface>::get_interface_type_name()
                                .as_ref(),
                        );
                    object
                },
            )
    }
}

```