omg-idl-code-gen 0.2.2

OMG IDL to Rust code generator library
Documentation
{% set indent = "    " %}{% set current_indent = indent * (indent_level if indent_level is defined else 0) %}
{{ current_indent }}#[allow(dead_code, non_camel_case_types)]
{{ current_indent }}#[derive(Serialize, Deserialize, Clone, Debug)]
{{ current_indent }}pub enum {{ enum_name }} {
{% for variant in variants %}{{ current_indent }}    {{ variant }},{% if not loop.last %}{{ '\n' }}{% endif %}{% endfor %}
{{ current_indent }}}

{{ current_indent }}#[allow(non_camel_case_types)]
{{ current_indent }}#[derive(Debug, PartialEq, Eq)]
{{ current_indent }}pub struct {{ enum_name }}Error;

{{ current_indent }}impl std::str::FromStr for {{ enum_name }} {
{{ current_indent }}    type Err = {{ enum_name }}Error;
{{ current_indent }}    fn from_str(value: &str) -> Result<Self, Self::Err> {
{{ current_indent }}        match value {
{% for variant in variants %}{{ current_indent }}            "{{ variant }}" => Ok({{ enum_name }}::{{ variant }}),{% if not loop.last %}{{ '\n' }}{% endif %}{% endfor %}
{{ current_indent }}            _ => Err({{ enum_name }}Error),
{{ current_indent }}        }
{{ current_indent }}    }
{{ current_indent }}}

{{ current_indent }}impl std::fmt::Display for {{ enum_name }} {
{{ current_indent }}    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
{{ current_indent }}        let enum_str = match self {
{% for variant in variants %}{{ current_indent }}            {{ current_indent }}{{ enum_name }}::{{ variant }} => "{{ variant }}",{% if not loop.last %}{{ '\n' }}{% endif %}{% endfor %}
{{ current_indent }}        };
{{ current_indent }}        write!(f, "{enum_str}")
{{ current_indent }}    }
{{ current_indent }}}