Fixes/upgrades
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
{#- A default's body: one Rust expression, no trailing semicolon. -#}
|
||||
{%- macro default_body(node) -%}
|
||||
{%- if node.kind == "none" -%}::std::option::Option::None
|
||||
{%- elif node.kind == "unit" -%}::std::default::Default::default()
|
||||
{%- elif node.kind == "bool" -%}{{ "true" if node.value else "false" }}
|
||||
{%- elif node.kind == "int" -%}{{ node.value }}
|
||||
{%- elif node.kind == "float" -%}{{ node.value | rust_f64 }}
|
||||
{%- elif node.kind == "string" -%}String::from({{ node.value | rust_string }})
|
||||
{%- elif node.kind == "empty_vec" -%}::std::vec::Vec::new()
|
||||
{%- elif node.kind == "empty_map" -%}::std::collections::BTreeMap::new()
|
||||
{%- elif node.kind == "array" -%}[{% for element in node.elements %}{{ rust_value(element) }}{{ ", " if not loop.last }}{% endfor %}]
|
||||
{%- elif node.kind == "enum_variant" -%}{{ node.type }}::{{ node.variant }}
|
||||
{%- elif node.kind == "delegate" -%}<{{ node.type }} as ::std::default::Default>::default()
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
|
||||
{#- A JSON-shaped value whose typed shape is not carried alongside. -#}
|
||||
{%- macro rust_value(node) -%}
|
||||
{%- if node.kind == "unit" -%}::std::default::Default::default()
|
||||
{%- elif node.kind == "bool" -%}{{ "true" if node.value else "false" }}
|
||||
{%- elif node.kind == "int" -%}{{ node.value }}_i64
|
||||
{%- elif node.kind == "float" -%}{{ node.value | rust_f64 }}
|
||||
{%- elif node.kind == "string" -%}String::from({{ node.value | rust_string }})
|
||||
{%- elif node.kind == "empty_vec" -%}::std::vec::Vec::new()
|
||||
{%- elif node.kind == "empty_map" -%}::std::collections::BTreeMap::new()
|
||||
{%- elif node.kind == "vec" -%}vec![{% for element in node.elements %}{{ rust_value(element) }}{{ ", " if not loop.last }}{% endfor %}]
|
||||
{%- elif node.kind == "map" -%}[{% for pair in node.pairs %}(String::from({{ pair.key | rust_string }}), {{ rust_value(pair.value) }}){{ ", " if not loop.last }}{% endfor %}].into_iter().collect()
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
Reference in New Issue
Block a user