openapi-codegen 0.1.0

Automatically generate rust HTTP clients from OpenAPI files.
Documentation
#[allow(unused_imports)]
use serde_json::Value;

#[allow(unused_imports)]
use std::borrow::Borrow;

#[allow(unused_imports)]
use super::*;

#[derive(Debug, Default, Serialize, Deserialize, PartialEq)]
pub struct r#{{pascal_id}} {
    {{~#each optional_fields}}
    #[serde(rename = "{{api_id}}", skip_serializing_if = "Option::is_none")]
    r#{{snake_id}}: Option<{{type}}>,{{/each}}
    {{~#each required_fields}}
    #[serde(rename = "{{api_id}}")]
    r#{{snake_id}}: {{type}},{{/each}}
}

impl r#{{pascal_id}} {
    pub fn new(
        {{~#each required_fields}}
        r#{{snake_id}}: {{type}},{{/each}}
    ) -> Self {
        Self {
          {{~#each optional_fields}}
          r#{{snake_id}}: None,{{/each}}
          {{~#each required_fields}}
          r#{{snake_id}}: {{snake_id}},{{/each}}
        }
    }

    {{~#each optional_fields}}

    pub fn set_{{snake_id}}(&mut self, r#{{snake_id}}: {{type}}) {
        self.r#{{snake_id}} = Some(r#{{snake_id}});
    }

    pub fn with_{{snake_id}}(mut self, r#{{snake_id}}: {{type}}) -> Self {
        self.r#{{snake_id}} = Some(r#{{snake_id}});
        self
    }

    pub fn r#{{snake_id}}(&self) -> Option<{{borrowed_type}}> {
        self.r#{{snake_id}}.as_ref().map(|x| x.borrow())
    }

    pub fn reset_{{snake_id}}(&mut self) {
        self.r#{{snake_id}} = None;
    }{{/each}}

    {{~#each required_fields}}

    pub fn set_{{snake_id}}(&mut self, r#{{snake_id}}: {{type}}) {
        self.r#{{snake_id}} = r#{{snake_id}};
    }

    pub fn with_{{snake_id}}(mut self, r#{{snake_id}}: {{type}}) -> Self {
        self.r#{{snake_id}} = r#{{snake_id}};
        self
    }

    pub fn r#{{snake_id}}(&self) -> {{borrowed_type}} {
        self.r#{{snake_id}}.borrow()
    }{{/each}}
}