@@ -752,11 +752,11 @@ impl std::str::FromStr for {{{classname}}} {
752752{{! general struct}}
753753{{#anyOf.size}}
754754{{#discriminator}}
755- #[derive(Debug, Clone, PartialEq, serde::Deserialize, derive_more::From )]
755+ #[derive(Debug, Clone, PartialEq, serde::Deserialize)]
756756#[serde(tag = "{{{propertyBaseName}}}")]
757757{{/discriminator}}
758758{{^discriminator}}
759- #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, derive_more::From )]
759+ #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
760760#[serde(untagged)]
761761{{/discriminator}}
762762#[allow(non_camel_case_types)]
@@ -797,85 +797,49 @@ impl std::str::FromStr for {{{classname}}} {
797797 }
798798}
799799
800- {{/anyOf.size}}
801- {{#oneOf.size}}
802- {{#discriminator}}
803- #[derive(Debug, Clone, PartialEq, serde::Deserialize, derive_more::From)]
804- #[serde(tag = "{{{propertyBaseName}}}")]
805- {{/discriminator}}
806- {{^discriminator}}
807- #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, derive_more::From)]
808- #[serde(untagged)]
809- {{/discriminator}}
810- #[allow(non_camel_case_types)]
811- pub enum {{{classname}}} {
812- {{#composedSchemas}}
813- {{#oneOf}}
814- {{{datatypeWithEnum}}}({{{dataType}}}),
815- {{/oneOf}}
816- {{/composedSchemas}}
817- }
818-
819- impl validator::Validate for {{{classname}}}
820- {
821- fn validate(&self) -> std::result::Result<(), validator::ValidationErrors> {
822- match self {
823- {{#composedSchemas}}
824- {{#anyOf}}
825- {{^isModel}}
826- Self::{{{datatypeWithEnum}}}(_) => std::result::Result::Ok(()),
827- {{/isModel}}
828- {{#isModel}}
829- Self::{{{datatypeWithEnum}}}(v) => v.validate(),
830- {{/isModel}}
831- {{/anyOf}}
832- {{/composedSchemas}}
833- }
834- }
835- }
836-
837800{{#discriminator}}
838801impl serde::Serialize for {{{classname}}} {
839802 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
840803 where S: serde::Serializer {
841804 match self {
842805 {{#composedSchemas}}
843- {{#oneOf }}
806+ {{#anyOf }}
844807 Self::{{{datatypeWithEnum}}}(x) => x.serialize(serializer),
845- {{/oneOf }}
808+ {{/anyOf }}
846809 {{/composedSchemas}}
847810 }
848811 }
849812}
850813{{/discriminator}}
851814
852- /// Converts Query Parameters representation (style=form, explode=false) to a {{{classname}}} value
853- /// as specified in https://swagger.io/docs/specification/serialization/
854- /// Should be implemented in a serde deserializer
855- impl std::str::FromStr for {{{classname}}} {
856- type Err = serde_json::Error;
857-
858- fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
859- serde_json::from_str(s)
815+ {{#composedSchemas}}
816+ {{#anyOf}}
817+ {{#vendorExtensions.x-from-trait}}
818+ impl From<{{{dataType}}}> for {{{classname}}} {
819+ fn from(value: {{{dataType}}}) -> Self {
820+ Self::{{{datatypeWithEnum}}}(value)
860821 }
861822}
823+ {{/vendorExtensions.x-from-trait}}
824+ {{/anyOf}}
825+ {{/composedSchemas}}
862826
863- {{/oneOf .size}}
864- {{#allOf .size}}
827+ {{/anyOf .size}}
828+ {{#oneOf .size}}
865829{{#discriminator}}
866- #[derive(Debug, Clone, PartialEq, serde::Deserialize, derive_more::From )]
830+ #[derive(Debug, Clone, PartialEq, serde::Deserialize)]
867831#[serde(tag = "{{{propertyBaseName}}}")]
868832{{/discriminator}}
869833{{^discriminator}}
870- #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, derive_more::From )]
834+ #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
871835#[serde(untagged)]
872836{{/discriminator}}
873837#[allow(non_camel_case_types)]
874838pub enum {{{classname}}} {
875839 {{#composedSchemas}}
876- {{#allOf }}
840+ {{#oneOf }}
877841 {{{datatypeWithEnum}}}({{{dataType}}}),
878- {{/allOf }}
842+ {{/oneOf }}
879843 {{/composedSchemas}}
880844}
881845
@@ -884,14 +848,14 @@ impl validator::Validate for {{{classname}}}
884848 fn validate(&self) -> std::result::Result<(), validator::ValidationErrors> {
885849 match self {
886850 {{#composedSchemas}}
887- {{#allOf }}
851+ {{#oneOf }}
888852 {{^isModel}}
889853 Self::{{{datatypeWithEnum}}}(_) => std::result::Result::Ok(()),
890854 {{/isModel}}
891855 {{#isModel}}
892856 Self::{{{datatypeWithEnum}}}(v) => v.validate(),
893857 {{/isModel}}
894- {{/allOf }}
858+ {{/oneOf }}
895859 {{/composedSchemas}}
896860 }
897861 }
@@ -903,9 +867,9 @@ impl serde::Serialize for {{{classname}}} {
903867 where S: serde::Serializer {
904868 match self {
905869 {{#composedSchemas}}
906- {{#allOf }}
870+ {{#oneOf }}
907871 Self::{{{datatypeWithEnum}}}(x) => x.serialize(serializer),
908- {{/allOf }}
872+ {{/oneOf }}
909873 {{/composedSchemas}}
910874 }
911875 }
@@ -923,10 +887,21 @@ impl std::str::FromStr for {{{classname}}} {
923887 }
924888}
925889
926- {{/allOf.size}}
890+ {{#composedSchemas}}
891+ {{#oneOf}}
892+ {{#vendorExtensions.x-from-trait}}
893+ impl From<{{{dataType}}}> for {{{classname}}} {
894+ fn from(value: {{{dataType}}}) -> Self {
895+ Self::{{{datatypeWithEnum}}}(value)
896+ }
897+ }
898+ {{/vendorExtensions.x-from-trait}}
899+ {{/oneOf}}
900+ {{/composedSchemas}}
901+
902+ {{/oneOf.size}}
927903{{^anyOf.size}}
928904{{^oneOf.size}}
929- {{^allOf.size}}
930905#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, validator::Validate)]
931906#[cfg_attr(feature = "conversion", derive(frunk::LabelledGeneric))]
932907pub struct {{{classname}}} {
@@ -1254,14 +1229,12 @@ impl std::str::FromStr for {{{classname}}} {
12541229 })
12551230 }
12561231}
1257- { {/allOf.size} }
12581232{ {/oneOf.size} }
12591233{ {/anyOf.size} }
12601234{ {/arrayModelType} }
12611235
12621236{ {^anyOf.size} }
12631237{ {^oneOf.size} }
1264- { {^allOf.size} }
12651238// Methods for converting between header::IntoHeaderValue<{ {{classname} }}> and HeaderValue
12661239
12671240#[cfg(feature = "server")]
@@ -1293,7 +1266,6 @@ impl std::convert::TryFrom<HeaderValue> for header::IntoHeaderValue<{{{classname
12931266 }
12941267 }
12951268}
1296- { {/allOf.size} }
12971269{ {/oneOf.size} }
12981270{ {/anyOf.size} }
12991271
0 commit comments