Defining a a recursive type
Or any type that requres you to define it in rust and gluon.
main.rs
:
#[macro_use] extern crate gluon_codegen; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, VmType, Getable, Pushable)] #[gluon(vm_type = "dom_types.Node")] pub enum Node { Element { children: Vec<Node>, }, Text(String), Empty, } use gluon::{vm::api::FunctionRef, Compiler}; fn main() -> Result<(), Box<dyn std::error::Error>> { let vm = gluon::new_vm(); let node_source = include_str!("node.glu"); Compiler::new() .load_script(&vm, "dom_types", &node_source) .unwrap_or_else(|e| panic!("{}", e)); Ok(()) }
node.glu
:
let { Tag } = import! dom_types.tag
let Node =
| Element { tag: Tag, children: Array Node }
| Text String
| Empty
{ Node }
Struct-like enum variants cause Getable to panic
Need to find a minimum code reproduction of the issue.
Update: Nevermind. It's working now. I have a recursive type, so the marshalling code can't be generated, but deriving Getable and Pushable seems to work well.
Generating Option fields doesn't work
What the fuck? Did he change some language semantics without updating the derive macro? If he imported the type and then used it instead of using the fully qualified name, it work.