1- use std:: { char, convert :: identity , marker:: PhantomData , rc:: Rc , thread:: JoinHandle } ;
1+ use std:: { char, marker:: PhantomData , rc:: Rc , thread:: JoinHandle } ;
22
33use derive_more:: with_trait:: { Deref , Display , From , Into } ;
44use serde:: { Deserialize , Serialize } ;
@@ -65,6 +65,16 @@ type String = std::string::String;
6565mod impl_string_scalar {
6666 use super :: * ;
6767
68+ impl < ' s , S > FromScalarValue < ' s , S > for String
69+ where
70+ S : TryScalarValueTo < ' s , Self , Error : IntoFieldError < S > > + ' s ,
71+ {
72+ fn from_scalar_value ( v : & ' s S ) -> FieldResult < Self , S > {
73+ v. try_scalar_value_to ( )
74+ . map_err ( IntoFieldError :: into_field_error)
75+ }
76+ }
77+
6878 pub ( super ) fn to_output < S : ScalarValue > ( v : & str ) -> Value < S > {
6979 Value :: scalar ( v. to_owned ( ) )
7080 }
@@ -173,22 +183,19 @@ where
173183 } )
174184}
175185
176-
177186#[ graphql_scalar]
178187#[ graphql( name = "String" , with = impl_arcstr_scalar, parse_token( String ) ) ]
179188type ArcStr = arcstr:: ArcStr ;
180189
181190mod impl_arcstr_scalar {
182191 use super :: ArcStr ;
183- use crate :: { IntoValue as _, Scalar , ScalarValue , Value , FieldResult } ;
192+ use crate :: { FieldResult , IntoValue as _, Scalar , ScalarValue , Value } ;
184193
185194 pub ( super ) fn to_output < S : ScalarValue > ( v : & ArcStr ) -> Value < S > {
186195 v. into_value ( )
187196 }
188-
189- pub ( super ) fn from_input < S : ScalarValue > (
190- v : & Scalar < S > ,
191- ) -> FieldResult < ArcStr , S > {
197+
198+ pub ( super ) fn from_input < S : ScalarValue > ( v : & Scalar < S > ) -> FieldResult < ArcStr , S > {
192199 if let Some ( s) = v. downcast_type :: < ArcStr > ( ) {
193200 Ok ( s. clone ( ) )
194201 } else {
@@ -203,15 +210,13 @@ type CompactString = compact_str::CompactString;
203210
204211mod impl_compactstring_scalar {
205212 use super :: CompactString ;
206- use crate :: { IntoValue as _, Scalar , ScalarValue , FieldResult , Value } ;
213+ use crate :: { FieldResult , IntoValue as _, Scalar , ScalarValue , Value } ;
207214
208215 pub ( super ) fn to_output < S : ScalarValue > ( v : & CompactString ) -> Value < S > {
209216 v. into_value ( )
210217 }
211218
212- pub ( super ) fn from_input < S : ScalarValue > (
213- v : & Scalar < S > ,
214- ) -> FieldResult < CompactString , S > {
219+ pub ( super ) fn from_input < S : ScalarValue > ( v : & Scalar < S > ) -> FieldResult < CompactString , S > {
215220 if let Some ( s) = v. downcast_type :: < CompactString > ( ) {
216221 Ok ( s. clone ( ) )
217222 } else {
@@ -307,6 +312,16 @@ type Boolean = bool;
307312mod impl_boolean_scalar {
308313 use super :: * ;
309314
315+ impl < ' s , S > FromScalarValue < ' s , S > for Boolean
316+ where
317+ S : TryScalarValueTo < ' s , Self , Error : IntoFieldError < S > > + ' s ,
318+ {
319+ fn from_scalar_value ( v : & ' s S ) -> FieldResult < Self , S > {
320+ v. try_scalar_value_to ( )
321+ . map_err ( IntoFieldError :: into_field_error)
322+ }
323+ }
324+
310325 pub ( super ) fn to_output < S : ScalarValue > ( v : & Boolean ) -> Value < S > {
311326 Value :: scalar ( * v)
312327 }
@@ -324,6 +339,16 @@ type Int = i32;
324339mod impl_int_scalar {
325340 use super :: * ;
326341
342+ impl < ' s , S > FromScalarValue < ' s , S > for Int
343+ where
344+ S : TryScalarValueTo < ' s , Self , Error : IntoFieldError < S > > + ' s ,
345+ {
346+ fn from_scalar_value ( v : & ' s S ) -> FieldResult < Self , S > {
347+ v. try_scalar_value_to ( )
348+ . map_err ( IntoFieldError :: into_field_error)
349+ }
350+ }
351+
327352 pub ( super ) fn to_output < S : ScalarValue > ( v : & Int ) -> Value < S > {
328353 Value :: scalar ( * v)
329354 }
@@ -346,6 +371,16 @@ type Float = f64;
346371mod impl_float_scalar {
347372 use super :: * ;
348373
374+ impl < ' s , S > FromScalarValue < ' s , S > for Float
375+ where
376+ S : TryScalarValueTo < ' s , Self , Error : IntoFieldError < S > > + ' s ,
377+ {
378+ fn from_scalar_value ( v : & ' s S ) -> FieldResult < Self , S > {
379+ v. try_scalar_value_to ( )
380+ . map_err ( IntoFieldError :: into_field_error)
381+ }
382+ }
383+
349384 pub ( super ) fn to_output < S : ScalarValue > ( v : & Float ) -> Value < S > {
350385 Value :: scalar ( * v)
351386 }
0 commit comments