use juniper::{graphql_union, FromContext, GraphQLObject}; #[graphql_union] trait Character { fn a(&self, ctx: &SubContext) -> Option<&Human>; fn b(&self, ctx: &CustomContext) -> Option<&Droid>; } #[derive(GraphQLObject)] #[graphql(context = CustomContext)] pub struct Human { id: String, home_planet: String, } #[derive(GraphQLObject)] #[graphql(context = CustomContext)] pub struct Droid { id: String, primary_function: String, } pub struct CustomContext; impl juniper::Context for CustomContext {} pub struct SubContext; impl juniper::Context for SubContext {} impl FromContext for SubContext { fn from(_: &CustomContext) -> &Self { &Self } } fn main() {}