@@ -121,40 +121,8 @@ impl Default for {{classname}} {
121121{{!-- for non-enum schemas --}}
122122{{^isEnum}}
123123{{^discriminator}}
124- {{#composedSchemas}}
125- {{#oneOf}}
126- {{#-first}}
127- {{! Model with composedSchemas.oneOf - generate enum}}
128- #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
129- #[serde(untagged)]
130- pub enum {{classname}} {
131- {{/-first}}
132- {{/oneOf}}
133- {{/composedSchemas}}
134- {{#composedSchemas}}
135- {{#oneOf}}
136- {{#description}}
137- /// {{{.}}}
138- {{/description}}
139- {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
140- {{/oneOf}}
141- {{/composedSchemas}}
142- {{#composedSchemas}}
143- {{#oneOf}}
144- {{#-last}}
145- }
146-
147- impl Default for {{classname}} {
148- fn default() -> Self {
149- {{#oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/oneOf}}
150- }
151- }
152- {{/-last}}
153- {{/oneOf}}
154- {{^oneOf}}
155- {{! composedSchemas exists but no oneOf - generate normal struct}}
156124{{#vendorExtensions.x-rust-has-byte-array}}#[serde_as]
157- {{/vendorExtensions.x-rust-has-byte-array}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
125+ {{/vendorExtensions.x-rust-has-byte-array}}{{#oneOf.isEmpty}} #[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
158126pub struct {{{classname}}} {
159127{{#vars}}
160128 {{#description}}
@@ -204,62 +172,29 @@ impl {{{classname}}} {
204172 }
205173 }
206174}
207- {{/oneOf}}
208- {{/composedSchemas}}
209- {{^composedSchemas}}
210- {{! Normal struct without composedSchemas}}
211- {{#vendorExtensions.x-rust-has-byte-array}}#[serde_as]
212- {{/vendorExtensions.x-rust-has-byte-array}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
213- pub struct {{{classname}}} {
214- {{#vars}}
175+ {{/oneOf.isEmpty}}
176+ {{^oneOf.isEmpty}}
177+ {{! TODO: add other vars that are not part of the oneOf}}
178+ {{#description}}
179+ /// {{{.}}}
180+ {{/description}}
181+ #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
182+ #[serde(untagged)]
183+ pub enum {{classname}} {
184+ {{#composedSchemas.oneOf}}
215185 {{#description}}
216186 /// {{{.}}}
217187 {{/description}}
218- {{#isByteArray}}
219- {{#vendorExtensions.isMandatory}}#[serde_as(as = "serde_with::base64::Base64")]{{/vendorExtensions.isMandatory}}{{^vendorExtensions.isMandatory}}#[serde_as(as = "{{^serdeAsDoubleOption}}Option{{/serdeAsDoubleOption}}{{#serdeAsDoubleOption}}super::DoubleOption{{/serdeAsDoubleOption}}<serde_with::base64::Base64>")]{{/vendorExtensions.isMandatory}}
220- {{/isByteArray}}
221- #[serde(rename = "{{{baseName}}}"{{^required}}{{#isNullable}}, default{{^isByteArray}}, with = "::serde_with::rust::double_option"{{/isByteArray}}{{/isNullable}}{{/required}}{{^required}}, skip_serializing_if = "Option::is_none"{{/required}}{{#required}}{{#isNullable}}, deserialize_with = "Option::deserialize"{{/isNullable}}{{/required}})]
222- pub {{{name}}}: {{!
223- ### Option Start
224- }}{{#isNullable}}Option<{{/isNullable}}{{^required}}Option<{{/required}}{{!
225- ### Enums
226- }}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{!
227- ### Non-Enums Start
228- }}{{^isEnum}}{{!
229- ### Models
230- }}{{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{{dataType}}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}{{!
231- ### Primative datatypes
232- }}{{^isModel}}{{#isByteArray}}Vec<u8>{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isModel}}{{!
233- ### Non-Enums End
234- }}{{/isEnum}}{{!
235- ### Option End (and trailing comma)
236- }}{{#isNullable}}>{{/isNullable}}{{^required}}>{{/required}},
237- {{/vars}}
188+ {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
189+ {{/composedSchemas.oneOf}}
238190}
239191
240- impl {{{classname}}} {
241- {{#description}}
242- /// {{{.}}}
243- {{/description}}
244- pub fn new({{#requiredVars}}{{{name}}}: {{!
245- ### Option Start
246- }}{{#isNullable}}Option<{{/isNullable}}{{!
247- ### Enums
248- }}{{#isEnum}}{{#isArray}}{{#uniqueItems}}std::collections::HashSet<{{/uniqueItems}}{{^uniqueItems}}Vec<{{/uniqueItems}}{{/isArray}}{{{enumName}}}{{#isArray}}>{{/isArray}}{{/isEnum}}{{!
249- ### Non-Enums
250- }}{{^isEnum}}{{#isByteArray}}Vec<u8>{{/isByteArray}}{{^isByteArray}}{{{dataType}}}{{/isByteArray}}{{/isEnum}}{{!
251- ### Option End
252- }}{{#isNullable}}>{{/isNullable}}{{!
253- ### Comma for next arguement
254- }}{{^-last}}, {{/-last}}{{/requiredVars}}) -> {{{classname}}} {
255- {{{classname}}} {
256- {{#vars}}
257- {{{name}}}{{^required}}: None{{/required}}{{#required}}{{#isModel}}{{^avoidBoxedModels}}: {{^isNullable}}Box::new({{{name}}}){{/isNullable}}{{#isNullable}}if let Some(x) = {{{name}}} {Some(Box::new(x))} else {None}{{/isNullable}}{{/avoidBoxedModels}}{{/isModel}}{{/required}},
258- {{/vars}}
259- }
192+ impl Default for {{classname}} {
193+ fn default() -> Self {
194+ {{#composedSchemas.oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/composedSchemas.oneOf}}
260195 }
261196}
262- {{/composedSchemas }}
197+ {{/oneOf.isEmpty }}
263198{{/discriminator}}
264199{{/isEnum}}
265200{{!-- for properties that are of enum type --}}
0 commit comments