@@ -481,6 +481,152 @@ impl MergeEmpty {
481481 Default :: default ( )
482482 }
483483}
484+ #[ doc = "`MergeNumberBounds`" ]
485+ #[ doc = r"" ]
486+ #[ doc = r" <details><summary>JSON schema</summary>" ]
487+ #[ doc = r"" ]
488+ #[ doc = r" ```json" ]
489+ #[ doc = "{" ]
490+ #[ doc = " \" allOf\" : [" ]
491+ #[ doc = " {" ]
492+ #[ doc = " \" type\" : \" number\" ," ]
493+ #[ doc = " \" maximum\" : 100.0," ]
494+ #[ doc = " \" minimum\" : 1.0" ]
495+ #[ doc = " }," ]
496+ #[ doc = " {" ]
497+ #[ doc = " \" type\" : \" number\" ," ]
498+ #[ doc = " \" exclusiveMaximum\" : 50.0," ]
499+ #[ doc = " \" exclusiveMinimum\" : 5.0" ]
500+ #[ doc = " }" ]
501+ #[ doc = " ]," ]
502+ #[ doc = " \" $comment\" : \" merging number constraints takes the most restrictive bounds; mixed inclusive/exclusive bounds are normalized to drop the subsumed one\" " ]
503+ #[ doc = "}" ]
504+ #[ doc = r" ```" ]
505+ #[ doc = r" </details>" ]
506+ #[ derive( :: serde :: Deserialize , :: serde :: Serialize , Clone , Debug ) ]
507+ #[ serde( transparent) ]
508+ pub struct MergeNumberBounds ( pub f64 ) ;
509+ impl :: std:: ops:: Deref for MergeNumberBounds {
510+ type Target = f64 ;
511+ fn deref ( & self ) -> & f64 {
512+ & self . 0
513+ }
514+ }
515+ impl :: std:: convert:: From < MergeNumberBounds > for f64 {
516+ fn from ( value : MergeNumberBounds ) -> Self {
517+ value. 0
518+ }
519+ }
520+ impl :: std:: convert:: From < f64 > for MergeNumberBounds {
521+ fn from ( value : f64 ) -> Self {
522+ Self ( value)
523+ }
524+ }
525+ impl :: std:: str:: FromStr for MergeNumberBounds {
526+ type Err = <f64 as :: std:: str:: FromStr >:: Err ;
527+ fn from_str ( value : & str ) -> :: std:: result:: Result < Self , Self :: Err > {
528+ Ok ( Self ( value. parse ( ) ?) )
529+ }
530+ }
531+ impl :: std:: convert:: TryFrom < & str > for MergeNumberBounds {
532+ type Error = <f64 as :: std:: str:: FromStr >:: Err ;
533+ fn try_from ( value : & str ) -> :: std:: result:: Result < Self , Self :: Error > {
534+ value. parse ( )
535+ }
536+ }
537+ impl :: std:: convert:: TryFrom < String > for MergeNumberBounds {
538+ type Error = <f64 as :: std:: str:: FromStr >:: Err ;
539+ fn try_from ( value : String ) -> :: std:: result:: Result < Self , Self :: Error > {
540+ value. parse ( )
541+ }
542+ }
543+ impl :: std:: fmt:: Display for MergeNumberBounds {
544+ fn fmt ( & self , f : & mut :: std:: fmt:: Formatter < ' _ > ) -> :: std:: fmt:: Result {
545+ self . 0 . fmt ( f)
546+ }
547+ }
548+ #[ doc = "`MergeStringBounds`" ]
549+ #[ doc = r"" ]
550+ #[ doc = r" <details><summary>JSON schema</summary>" ]
551+ #[ doc = r"" ]
552+ #[ doc = r" ```json" ]
553+ #[ doc = "{" ]
554+ #[ doc = " \" allOf\" : [" ]
555+ #[ doc = " {" ]
556+ #[ doc = " \" type\" : \" string\" ," ]
557+ #[ doc = " \" maxLength\" : 20," ]
558+ #[ doc = " \" minLength\" : 5" ]
559+ #[ doc = " }," ]
560+ #[ doc = " {" ]
561+ #[ doc = " \" type\" : \" string\" ," ]
562+ #[ doc = " \" maxLength\" : 10," ]
563+ #[ doc = " \" minLength\" : 2" ]
564+ #[ doc = " }" ]
565+ #[ doc = " ]," ]
566+ #[ doc = " \" $comment\" : \" merging string constraints takes the most restrictive bounds: max_length takes the min, min_length takes the max\" " ]
567+ #[ doc = "}" ]
568+ #[ doc = r" ```" ]
569+ #[ doc = r" </details>" ]
570+ #[ derive( :: serde :: Serialize , Clone , Debug , Eq , Hash , Ord , PartialEq , PartialOrd ) ]
571+ #[ serde( transparent) ]
572+ pub struct MergeStringBounds ( :: std:: string:: String ) ;
573+ impl :: std:: ops:: Deref for MergeStringBounds {
574+ type Target = :: std:: string:: String ;
575+ fn deref ( & self ) -> & :: std:: string:: String {
576+ & self . 0
577+ }
578+ }
579+ impl :: std:: convert:: From < MergeStringBounds > for :: std:: string:: String {
580+ fn from ( value : MergeStringBounds ) -> Self {
581+ value. 0
582+ }
583+ }
584+ impl :: std:: str:: FromStr for MergeStringBounds {
585+ type Err = self :: error:: ConversionError ;
586+ fn from_str ( value : & str ) -> :: std:: result:: Result < Self , self :: error:: ConversionError > {
587+ if value. chars ( ) . count ( ) > 10usize {
588+ return Err ( "longer than 10 characters" . into ( ) ) ;
589+ }
590+ if value. chars ( ) . count ( ) < 5usize {
591+ return Err ( "shorter than 5 characters" . into ( ) ) ;
592+ }
593+ Ok ( Self ( value. to_string ( ) ) )
594+ }
595+ }
596+ impl :: std:: convert:: TryFrom < & str > for MergeStringBounds {
597+ type Error = self :: error:: ConversionError ;
598+ fn try_from ( value : & str ) -> :: std:: result:: Result < Self , self :: error:: ConversionError > {
599+ value. parse ( )
600+ }
601+ }
602+ impl :: std:: convert:: TryFrom < & :: std:: string:: String > for MergeStringBounds {
603+ type Error = self :: error:: ConversionError ;
604+ fn try_from (
605+ value : & :: std:: string:: String ,
606+ ) -> :: std:: result:: Result < Self , self :: error:: ConversionError > {
607+ value. parse ( )
608+ }
609+ }
610+ impl :: std:: convert:: TryFrom < :: std:: string:: String > for MergeStringBounds {
611+ type Error = self :: error:: ConversionError ;
612+ fn try_from (
613+ value : :: std:: string:: String ,
614+ ) -> :: std:: result:: Result < Self , self :: error:: ConversionError > {
615+ value. parse ( )
616+ }
617+ }
618+ impl < ' de > :: serde:: Deserialize < ' de > for MergeStringBounds {
619+ fn deserialize < D > ( deserializer : D ) -> :: std:: result:: Result < Self , D :: Error >
620+ where
621+ D : :: serde:: Deserializer < ' de > ,
622+ {
623+ :: std:: string:: String :: deserialize ( deserializer) ?
624+ . parse ( )
625+ . map_err ( |e : self :: error:: ConversionError | {
626+ <D :: Error as :: serde:: de:: Error >:: custom ( e. to_string ( ) )
627+ } )
628+ }
629+ }
484630#[ doc = "`NarrowNumber`" ]
485631#[ doc = r"" ]
486632#[ doc = r" <details><summary>JSON schema</summary>" ]
0 commit comments