vrchatapi 1.23.0

VRChat API Client for Rust
Documentation
{{>partial_header}}
use crate::models;
use serde::{Deserialize, Serialize};
{{#models}}
{{#model}}
{{^isEnum}}{{#vendorExtensions.x-rust-has-byte-array}}
use serde_with::serde_as;
{{/vendorExtensions.x-rust-has-byte-array}}{{#vendorExtensions.x-rust-has-integer-property-enum}}
use serde_repr::{Serialize_repr,Deserialize_repr};
{{/vendorExtensions.x-rust-has-integer-property-enum}}{{/isEnum}}
{{#isEnum}}
{{#isInteger}}
use serde_repr::{Serialize_repr,Deserialize_repr};
{{/isInteger}}
{{/isEnum}}
{{#description}}
/// {{{description}}}
{{/description}}
{{!-- for repr(int) enum schemas --}}
{{#isEnum}}
{{#isInteger}}
#[repr(i64)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize_repr, Deserialize_repr)]
pub enum {{{classname}}} {
{{#allowableValues}}
{{#enumVars}}
    {{{name}}} = {{{value}}},
{{/enumVars}}{{/allowableValues}}
}

impl std::fmt::Display for {{{classname}}} {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", match self {
            {{#allowableValues}}
            {{#enumVars}}
            Self::{{{name}}} => "{{{value}}}",
            {{/enumVars}}
            {{/allowableValues}}
        })
    }
}
{{/isInteger}}
{{/isEnum}}
{{!-- for enum schemas --}}
{{#isEnum}}
{{^isInteger}}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum {{{classname}}} {
{{#allowableValues}}
{{#enumVars}}
    #[serde(rename = "{{{value}}}")]
    {{{name}}},
{{/enumVars}}{{/allowableValues}}
}

impl std::fmt::Display for {{{classname}}} {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            {{#allowableValues}}
            {{#enumVars}}
            Self::{{{name}}} => write!(f, "{{{value}}}"),
            {{/enumVars}}
            {{/allowableValues}}
        }
    }
}

{{/isInteger}}
impl Default for {{{classname}}} {
    fn default() -> {{{classname}}} {
        {{#allowableValues}}
        Self::{{ enumVars.0.name }}
        {{/allowableValues}}
    }
}
{{/isEnum}}
{{!-- for schemas that have a discriminator --}}
{{#discriminator}}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(tag = "{{{propertyBaseName}}}")]
pub enum {{{classname}}} {
    {{^oneOf}}
    {{#mappedModels}}
    #[serde(rename="{{mappingName}}")]
    {{^vendorExtensions.x-rust-inline-variants}}
    {{!-- newtype variant: the child's own fields survive; named by modelName (unique per mapping), wraps the real classname --}}
    {{{modelName}}}({{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}models::{{#model}}{{{classname}}}{{/model}}{{^model}}{{{modelName}}}{{/model}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}),
    {{/vendorExtensions.x-rust-inline-variants}}
    {{#vendorExtensions.x-rust-inline-variants}}
    {{{modelName}}} {
    {{#vars}}
        {{#description}}
        /// {{{.}}}
        {{/description}}
        #[serde(rename = "{{{baseName}}}"{{^required}}, skip_serializing_if = "Option::is_none"{{/required}})]
        {{{name}}}: {{#required}}{{#isNullable}}Option<{{/isNullable}}{{/required}}{{^required}}Option<{{/required}}{{#isEnum}}{{{enumName}}}{{/isEnum}}{{^isEnum}}{{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{{dataType}}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}{{^isModel}}{{{dataType}}}{{/isModel}}{{/isEnum}}{{#required}}{{#isNullable}}>{{/isNullable}}{{/required}}{{^required}}>{{/required}},
    {{/vars}}
    },
    {{/vendorExtensions.x-rust-inline-variants}}
    {{/mappedModels}}
    {{/oneOf}}
    {{^oneOf.isEmpty}}
    {{#composedSchemas.oneOf}}
    {{#description}}
    /// {{{.}}}
    {{/description}}
    {{#-last}}
    {{#discriminator.vendorExtensions.x-defaultMapping}}
    #[serde(untagged)]
    {{/discriminator.vendorExtensions.x-defaultMapping}}
    {{^discriminator.vendorExtensions.x-defaultMapping}}
    {{#baseName}}
    #[serde(rename="{{{.}}}")]
    {{/baseName}}
    {{/discriminator.vendorExtensions.x-defaultMapping}}
    {{/-last}}
    {{^-last}}
    {{#baseName}}
    #[serde(rename="{{{.}}}")]
    {{/baseName}}
    {{/-last}}
    {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
    {{/composedSchemas.oneOf}}
    {{/oneOf.isEmpty}}
}

impl Default for {{classname}} {
    fn default() -> Self {
        {{^oneOf}}{{#mappedModels}}{{#-first}}{{^vendorExtensions.x-rust-inline-variants}}Self::{{modelName}}(Default::default()){{/vendorExtensions.x-rust-inline-variants}}{{#vendorExtensions.x-rust-inline-variants}}Self::{{modelName}} {
        {{#vars}}
            {{{name}}}: Default::default(),
        {{/vars}}
        }{{/vendorExtensions.x-rust-inline-variants}}{{/-first}}{{/mappedModels}}
        {{/oneOf}}{{^oneOf.isEmpty}}{{#composedSchemas.oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/composedSchemas.oneOf}}{{/oneOf.isEmpty}}
    }
}

{{/discriminator}}
{{!-- for non-enum schemas --}}
{{^isEnum}}
{{^discriminator}}
{{#oneOf.isEmpty}}{{^composedSchemas.anyOf}}#[serde_with::serde_as]
{{/composedSchemas.anyOf}}{{/oneOf.isEmpty}}{{!
}}{{#oneOf.isEmpty}}{{^composedSchemas.anyOf}}#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct {{{classname}}} {
{{#composedSchemas.allOf}}
{{#ref}}
    #[serde(flatten)]
    pub {{#lambda.snakecase}}{{complexType}}{{/lambda.snakecase}}: {{{dataType}}},
{{/ref}}
{{^ref}}
{{#vars}}
{{>model_field}}
{{/vars}}
{{/ref}}
{{/composedSchemas.allOf}}
{{^composedSchemas.allOf}}
{{#vars}}
{{>model_field}}
{{/vars}}
{{/composedSchemas.allOf}}
}

impl {{{classname}}} {
    {{#description}}
    /// {{{.}}}
    {{/description}}
    pub fn new({{#composedSchemas.allOf}}{{#ref}}{{#lambda.snakecase}}{{complexType}}{{/lambda.snakecase}}: {{{dataType}}}, {{/ref}}{{^ref}}{{#vars}}{{#required}}{{{name}}}: {{>model_param}}, {{/required}}{{/vars}}{{/ref}}{{/composedSchemas.allOf}}{{^composedSchemas.allOf}}{{#requiredVars}}{{{name}}}: {{>model_param}}, {{/requiredVars}}{{/composedSchemas.allOf}}) -> {{{classname}}} {
        {{{classname}}} {
            {{#composedSchemas.allOf}}
            {{#ref}}
            {{#lambda.snakecase}}{{complexType}}{{/lambda.snakecase}},
            {{/ref}}
            {{^ref}}
            {{#vars}}
            {{>model_init}}
            {{/vars}}
            {{/ref}}
            {{/composedSchemas.allOf}}
            {{^composedSchemas.allOf}}
            {{#vars}}
            {{>model_init}}
            {{/vars}}
            {{/composedSchemas.allOf}}
        }
    }
}
{{/composedSchemas.anyOf}}
{{/oneOf.isEmpty}}
{{^oneOf.isEmpty}}
{{! TODO: add other vars that are not part of the oneOf}}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum {{classname}} {
{{#composedSchemas.oneOf}}
    {{{name}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
{{/composedSchemas.oneOf}}
}

impl Default for {{classname}} {
    fn default() -> Self {
        {{#composedSchemas.oneOf}}{{#-first}}Self::{{{name}}}(Default::default()){{/-first}}{{/composedSchemas.oneOf}}
    }
}
{{/oneOf.isEmpty}}
{{^anyOf.isEmpty}}
{{! TODO: add other vars that are not part of the anyOf}}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum {{classname}} {
{{#composedSchemas.anyOf}}
    {{{nameInPascalCase}}}({{#isModel}}{{^avoidBoxedModels}}Box<{{/avoidBoxedModels}}{{/isModel}}{{{dataType}}}{{#isModel}}{{^avoidBoxedModels}}>{{/avoidBoxedModels}}{{/isModel}}),
{{/composedSchemas.anyOf}}
}


impl Default for {{classname}} {
    fn default() -> Self {
    {{#composedSchemas.anyOf}}{{#-first}}Self::{{{nameInPascalCase}}}(Default::default()){{/-first}}{{/composedSchemas.anyOf}}
    }
}
{{/anyOf.isEmpty}}
{{/discriminator}}
{{/isEnum}}
{{!-- for properties that are of enum type --}}
{{#vars}}
{{#isEnum}}
{{#isInteger}}
{{#description}}
/// {{{description}}}
{{/description}}
#[repr(i64)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize_repr, Deserialize_repr)]
pub enum {{{enumName}}} {
{{#allowableValues}}
{{#enumVars}}
    {{{name}}} = {{{value}}},
{{/enumVars}}
{{/allowableValues}}
}

impl std::fmt::Display for {{{enumName}}} {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", match self {
            {{#allowableValues}}
            {{#enumVars}}
            Self::{{{name}}} => "{{{value}}}",
            {{/enumVars}}
            {{/allowableValues}}
        })
    }
}
{{/isInteger}}
{{^isInteger}}
{{#description}}
/// {{{description}}}
{{/description}}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum {{{enumName}}} {
{{#allowableValues}}
{{#enumVars}}
    #[serde(rename = "{{{value}}}")]
    {{{name}}},
{{/enumVars}}
{{/allowableValues}}
}
{{/isInteger}}

impl Default for {{{enumName}}} {
    fn default() -> {{{enumName}}} {
        {{#allowableValues}}
        Self::{{ enumVars.0.name }}
        {{/allowableValues}}
    }
}
{{/isEnum}}
{{/vars}}

{{/model}}
{{/models}}