Skip to main content

Module

Trait Module 

Source
pub trait Module {
    // Required method
    fn name(&self) -> &str;

    // Provided methods
    fn dependencies(&self) -> Vec<String> { ... }
    fn entities(&self) -> Vec<EntityInfo> { ... }
    fn view_controllers(&self) -> Vec<Box<dyn ViewController>> { ... }
    fn window_controllers(&self) -> Vec<Box<dyn WindowController>> { ... }
    fn extend_model(&self, _root: &mut ModelNode) { ... }
    fn update_generated(&self, _root: &mut ModelNode) { ... }
    fn model_difference(&self) -> Option<&'static str> { ... }
    fn initial_records(
        &self,
        _space: &mut dyn ObjectSpace,
    ) -> Result<(), String> { ... }
}
Expand description

A part of an application: what it adds, in one place. Modules stack, each over those it depends on.

Required Methods§

Source

fn name(&self) -> &str

What it is known by.

Provided Methods§

Source

fn dependencies(&self) -> Vec<String>

The modules that have to come before it, by name.

Source

fn entities(&self) -> Vec<EntityInfo>

The entities it declares.

Source

fn view_controllers(&self) -> Vec<Box<dyn ViewController>>

New controllers for a frame; each frame has its own.

Source

fn window_controllers(&self) -> Vec<Box<dyn WindowController>>

New window controllers for a frame.

Source

fn extend_model(&self, _root: &mut ModelNode)

Adds nodes and settings to the generated model. What comes from code is not a difference, so a person’s own settings still win over it.

Source

fn update_generated(&self, _root: &mut ModelNode)

Changes what was generated, once every module added its part.

Source

fn model_difference(&self) -> Option<&'static str>

Its layer of the model, as JSON.

Source

fn initial_records(&self, _space: &mut dyn ObjectSpace) -> Result<(), String>

Puts in place the records it needs, when an application opens on its storage. It runs every time, so it looks before adding. The commit is up to whoever calls it.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§