Skip to main content

Module

Trait Module 

Source
pub trait Module:
    Send
    + Sync
    + 'static {
    // Required method
    fn id(&self) -> ModuleId;

    // Provided methods
    fn migrations(&self) -> MigrationSet { ... }
    fn requires(&self) -> &'static [ModuleId] { ... }
    fn requires_db_capabilities(&self) -> &'static [Capability] { ... }
    fn optional_db_capabilities(&self) -> &'static [Capability] { ... }
    fn register(&self, registry: &mut Registry) { ... }
    fn admin_base(&self) -> Option<&'static str> { ... }
    fn catalogs(&self) -> &'static [(&'static str, &'static str)] { ... }
}
Expand description

A registerable unit: a framework crate or an application feature/plugin.

Required Methods§

Source

fn id(&self) -> ModuleId

Stable identity, a lowercase vendor.package code. Namespaces this module’s applied-migration history and is the target of other modules’ requires. Its string must equal the module_id of the set returned by migrations.

Provided Methods§

Source

fn migrations(&self) -> MigrationSet

This module’s migrations, in apply order. Defaults to none, for a code-only module.

Source

fn requires(&self) -> &'static [ModuleId]

Ids of modules whose migrations and registration must run before this module’s, so cross-module foreign keys and contributions resolve. Defaults to none.

Source

fn requires_db_capabilities(&self) -> &'static [Capability]

Database capabilities this module cannot work without. The application refuses to boot if one is unavailable, with a clear error naming the module and capability, instead of failing deep inside a migration.

Source

fn optional_db_capabilities(&self) -> &'static [Capability]

Database capabilities this module uses when present and does without when absent. Query the boot-time CapabilitySet to gate the enhanced path (for example trigram fuzzy search).

Source

fn register(&self, registry: &mut Registry)

Contributes this module’s items (resources, permissions, nav, settings, field types, and any plugin-defined extension items) to the Registry. Runs in requires order, after migrations. Default: contributes nothing.

Source

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

Where this module’s admin screens mount, relative to the admin root.

None (the default) namespaces them under the module’s identity, so rainmill.location contributing /nodes serves /rainmill/location/nodes and two modules cannot collide by accident. Declaring a base takes that path instead, which is a claim: a clash with another module aborts boot. A deployment can override either through backend.paths.

Source

fn catalogs(&self) -> &'static [(&'static str, &'static str)]

This module’s UI-string catalogs, as (locale, po_text) pairs, each an include_str!’d gettext PO baked into the binary. English needs none (its source string is the key); other locales ship a PO. The boot loader merges them into the shared catalog store. Default: none.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§