Remove GraphQLType impl for unit () type (#355)
This impl can cause weird runtime errors and serves no real practical purpose. Removing the impl is a breaking change but is the only way to error out at runtime.
This commit is contained in:
parent
2aaf8dd729
commit
d47aa990ba
2 changed files with 4 additions and 43 deletions
|
@ -18,6 +18,7 @@ This should not have any impact on your code, since juniper already was 2018 com
|
||||||
### Other changes
|
### Other changes
|
||||||
|
|
||||||
- The minimum required Rust version is now `1.34.0`.
|
- The minimum required Rust version is now `1.34.0`.
|
||||||
|
- The `GraphQLType` impl for () was removed to improve compile time safefty. [#355](https://github.com/graphql-rust/juniper/pull/355)
|
||||||
- The `ScalarValue` custom derive has been renamed to `GraphQLScalarValue`.
|
- The `ScalarValue` custom derive has been renamed to `GraphQLScalarValue`.
|
||||||
- Added built-in support for the canonical schema introspection query via
|
- Added built-in support for the canonical schema introspection query via
|
||||||
`juniper::introspect()`.
|
`juniper::introspect()`.
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
use std::convert::From;
|
use std::convert::From;
|
||||||
use std::fmt::Debug;
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
use std::{char, u32};
|
use std::{char, u32};
|
||||||
|
|
||||||
use crate::ast::{FromInputValue, InputValue, Selection, ToInputValue};
|
use crate::ast::{InputValue, Selection, ToInputValue};
|
||||||
use crate::executor::{Executor, Registry};
|
use crate::executor::{Executor, Registry};
|
||||||
use crate::parser::{LexerError, ParseError, ScalarToken, Token};
|
use crate::parser::{LexerError, ParseError, ScalarToken, Token};
|
||||||
use crate::schema::meta::MetaType;
|
use crate::schema::meta::MetaType;
|
||||||
use crate::types::base::GraphQLType;
|
use crate::types::base::GraphQLType;
|
||||||
use crate::value::{ParseScalarResult, ParseScalarValue, ScalarRefValue, ScalarValue, Value};
|
use crate::value::{ParseScalarResult, ScalarRefValue, ScalarValue, Value};
|
||||||
|
|
||||||
/// An ID as defined by the GraphQL specification
|
/// An ID as defined by the GraphQL specification
|
||||||
///
|
///
|
||||||
|
@ -274,46 +273,7 @@ graphql_scalar!(f64 as "Float" where Scalar = <S>{
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
impl<S> GraphQLType<S> for ()
|
/// Utillity type to define read-only schemas
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
for<'b> &'b S: ScalarRefValue<'b>,
|
|
||||||
{
|
|
||||||
type Context = ();
|
|
||||||
type TypeInfo = ();
|
|
||||||
|
|
||||||
fn name(_: &()) -> Option<&str> {
|
|
||||||
Some("__Unit")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn meta<'r>(_: &(), registry: &mut Registry<'r, S>) -> MetaType<'r, S>
|
|
||||||
where
|
|
||||||
S: 'r,
|
|
||||||
for<'b> &'b S: ScalarRefValue<'b>,
|
|
||||||
{
|
|
||||||
registry.build_scalar_type::<Self>(&()).into_meta()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S> ParseScalarValue<S> for ()
|
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
{
|
|
||||||
fn from_str<'a>(_value: ScalarToken<'a>) -> ParseScalarResult<'a, S> {
|
|
||||||
Ok(S::from(0))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S: Debug> FromInputValue<S> for () {
|
|
||||||
fn from_input_value<'a>(_: &'a InputValue<S>) -> Option<()>
|
|
||||||
where
|
|
||||||
for<'b> &'b S: ScalarRefValue<'b>,
|
|
||||||
{
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Utility type to define read-only schemas
|
|
||||||
///
|
///
|
||||||
/// If you instantiate `RootNode` with this as the mutation, no mutation will be
|
/// If you instantiate `RootNode` with this as the mutation, no mutation will be
|
||||||
/// generated for the schema.
|
/// generated for the schema.
|
||||||
|
|
Loading…
Reference in a new issue