pub trait WorldGenerator {
// Required methods
fn import_interface(
&mut self,
resolve: &Resolve,
name: &str,
iface: InterfaceId,
files: &mut Files
);
fn export_interface(
&mut self,
resolve: &Resolve,
name: &str,
iface: InterfaceId,
files: &mut Files
);
fn import_funcs(
&mut self,
resolve: &Resolve,
world: WorldId,
funcs: &[(&str, &Function)],
files: &mut Files
);
fn export_funcs(
&mut self,
resolve: &Resolve,
world: WorldId,
funcs: &[(&str, &Function)],
files: &mut Files
);
fn export_types(
&mut self,
resolve: &Resolve,
world: WorldId,
types: &[(&str, TypeId)],
files: &mut Files
);
fn finish(&mut self, resolve: &Resolve, world: WorldId, files: &mut Files);
// Provided methods
fn generate(&mut self, resolve: &Resolve, id: WorldId, files: &mut Files) { ... }
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) { ... }
}