@@ -2440,28 +2440,27 @@ mod impl_borsh {
24402440#[ cfg( all( feature = "std" , feature = "schemars" ) ) ]
24412441mod impl_schemars {
24422442 extern crate schemars;
2443- use self :: schemars:: gen :: SchemaGenerator ;
2444- use self :: schemars:: schema :: { InstanceType , Schema , SchemaObject } ;
2443+ use self :: schemars:: generate :: SchemaGenerator ;
2444+ use self :: schemars:: Schema ;
24452445 use super :: { NotNan , OrderedFloat } ;
24462446
24472447 macro_rules! primitive_float_impl {
24482448 ( $type: ty, $schema_name: literal) => {
24492449 impl schemars:: JsonSchema for $type {
2450- fn is_referenceable ( ) -> bool {
2451- false
2450+ fn inline_schema ( ) -> bool {
2451+ true
24522452 }
24532453
2454- fn schema_name( ) -> std:: string :: String {
2455- std:: string :: String :: from( $schema_name)
2454+ fn schema_name( ) -> std:: borrow :: Cow < ' static , str > {
2455+ std:: borrow :: Cow :: from( $schema_name)
24562456 }
24572457
24582458 fn json_schema( _: & mut SchemaGenerator ) -> Schema {
2459- SchemaObject {
2460- instance_type: Some ( InstanceType :: Number . into( ) ) ,
2461- format: Some ( std:: string:: String :: from( $schema_name) ) ,
2462- ..Default :: default ( )
2463- }
2464- . into( )
2459+ schemars:: json_schema!( {
2460+ "type" : "number" ,
2461+ "title" : $schema_name,
2462+ "format" : $schema_name,
2463+ } )
24652464 }
24662465 }
24672466 } ;
@@ -2474,93 +2473,34 @@ mod impl_schemars {
24742473
24752474 #[ test]
24762475 fn schema_generation_does_not_panic_for_common_floats ( ) {
2477- {
2478- let schema = schemars:: gen:: SchemaGenerator :: default ( )
2479- . into_root_schema_for :: < OrderedFloat < f32 > > ( ) ;
2480- assert_eq ! (
2481- schema. schema. instance_type,
2482- Some ( schemars:: schema:: SingleOrVec :: Single ( std:: boxed:: Box :: new(
2483- schemars:: schema:: InstanceType :: Number
2484- ) ) )
2485- ) ;
2486- assert_eq ! (
2487- schema. schema. metadata. unwrap( ) . title. unwrap( ) ,
2488- std:: string:: String :: from( "float" )
2489- ) ;
2490- }
2491- {
2492- let schema = schemars:: gen:: SchemaGenerator :: default ( )
2493- . into_root_schema_for :: < OrderedFloat < f64 > > ( ) ;
2494- assert_eq ! (
2495- schema. schema. instance_type,
2496- Some ( schemars:: schema:: SingleOrVec :: Single ( std:: boxed:: Box :: new(
2497- schemars:: schema:: InstanceType :: Number
2498- ) ) )
2499- ) ;
2500- assert_eq ! (
2501- schema. schema. metadata. unwrap( ) . title. unwrap( ) ,
2502- std:: string:: String :: from( "double" )
2503- ) ;
2504- }
2505- {
2506- let schema =
2507- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < NotNan < f32 > > ( ) ;
2508- assert_eq ! (
2509- schema. schema. instance_type,
2510- Some ( schemars:: schema:: SingleOrVec :: Single ( std:: boxed:: Box :: new(
2511- schemars:: schema:: InstanceType :: Number
2512- ) ) )
2513- ) ;
2514- assert_eq ! (
2515- schema. schema. metadata. unwrap( ) . title. unwrap( ) ,
2516- std:: string:: String :: from( "float" )
2517- ) ;
2518- }
2519- {
2520- let schema =
2521- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < NotNan < f64 > > ( ) ;
2522- assert_eq ! (
2523- schema. schema. instance_type,
2524- Some ( schemars:: schema:: SingleOrVec :: Single ( std:: boxed:: Box :: new(
2525- schemars:: schema:: InstanceType :: Number
2526- ) ) )
2527- ) ;
2528- assert_eq ! (
2529- schema. schema. metadata. unwrap( ) . title. unwrap( ) ,
2530- std:: string:: String :: from( "double" )
2531- ) ;
2476+ fn test < T : schemars:: JsonSchema > ( title : & str ) {
2477+ let schema = schemars:: generate:: SchemaGenerator :: default ( ) . into_root_schema_for :: < T > ( ) ;
2478+
2479+ assert_eq ! ( schema. get( "type" ) . unwrap( ) . as_str( ) . unwrap( ) , "number" ) ;
2480+ assert_eq ! ( schema. get( "title" ) . unwrap( ) . as_str( ) . unwrap( ) , title) ;
2481+ assert_eq ! ( schema. get( "format" ) . unwrap( ) . as_str( ) . unwrap( ) , title) ;
25322482 }
2483+
2484+ test :: < OrderedFloat < f32 > > ( "float" ) ;
2485+ test :: < NotNan < f32 > > ( "float" ) ;
2486+ test :: < OrderedFloat < f64 > > ( "double" ) ;
2487+ test :: < NotNan < f64 > > ( "double" ) ;
25332488 }
2489+
25342490 #[ test]
25352491 fn ordered_float_schema_match_primitive_schema ( ) {
2536- {
2537- let of_schema = schemars:: gen:: SchemaGenerator :: default ( )
2538- . into_root_schema_for :: < OrderedFloat < f32 > > ( ) ;
2539- let prim_schema =
2540- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < f32 > ( ) ;
2541- assert_eq ! ( of_schema, prim_schema) ;
2542- }
2543- {
2544- let of_schema = schemars:: gen:: SchemaGenerator :: default ( )
2545- . into_root_schema_for :: < OrderedFloat < f64 > > ( ) ;
2546- let prim_schema =
2547- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < f64 > ( ) ;
2548- assert_eq ! ( of_schema, prim_schema) ;
2549- }
2550- {
2551- let of_schema =
2552- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < NotNan < f32 > > ( ) ;
2553- let prim_schema =
2554- schemars:: gen:: SchemaGenerator :: default ( ) . into_root_schema_for :: < f32 > ( ) ;
2555- assert_eq ! ( of_schema, prim_schema) ;
2556- }
2557- {
2492+ fn test < Wrapped : schemars:: JsonSchema , Inner : schemars:: JsonSchema > ( ) {
25582493 let of_schema =
2559- schemars:: gen :: SchemaGenerator :: default ( ) . into_root_schema_for :: < NotNan < f64 > > ( ) ;
2494+ schemars:: generate :: SchemaGenerator :: default ( ) . into_root_schema_for :: < Wrapped > ( ) ;
25602495 let prim_schema =
2561- schemars:: gen :: SchemaGenerator :: default ( ) . into_root_schema_for :: < f64 > ( ) ;
2496+ schemars:: generate :: SchemaGenerator :: default ( ) . into_root_schema_for :: < Inner > ( ) ;
25622497 assert_eq ! ( of_schema, prim_schema) ;
25632498 }
2499+
2500+ test :: < OrderedFloat < f32 > , f32 > ( ) ;
2501+ test :: < NotNan < f32 > , f32 > ( ) ;
2502+ test :: < OrderedFloat < f64 > , f64 > ( ) ;
2503+ test :: < NotNan < f64 > , f64 > ( ) ;
25642504 }
25652505}
25662506
0 commit comments