pub trait Module:
Send
+ Sync
+ 'static {
Show 13 methods
// Required method
fn name(&self) -> &'static str;
// Provided methods
fn imports(&self) -> Vec<Arc<dyn Module>> { ... }
fn providers(&self) -> Result<Vec<ProviderDefinition>> { ... }
fn exports(&self) -> Result<Vec<ProviderToken>> { ... }
fn is_global(&self) -> bool { ... }
fn middleware(&self) -> Vec<Arc<dyn Middleware>> { ... }
fn controllers(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<ControllerDefinition>> { ... }
fn routes(&self) -> Result<Vec<RouteDefinition>> { ... }
fn gateways(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<WebSocketGatewayDefinition>> { ... }
fn message_patterns(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<MessagePatternDefinition>> { ... }
fn on_module_init(&self, _module_ref: &ModuleRef) -> Result<()> { ... }
fn on_application_bootstrap(
&self,
_module_ref: ModuleRef,
) -> BoxFuture<'static, Result<()>> { ... }
fn on_application_shutdown(
&self,
_module_ref: ModuleRef,
) -> BoxFuture<'static, Result<()>> { ... }
}Expand description
A module contributes imports, providers, controllers, and routes.
This is the Rust equivalent of a Nest module boundary. Modules organize the application graph; HTTP serving remains delegated to an adapter.
Required Methods§
Provided Methods§
Sourcefn imports(&self) -> Vec<Arc<dyn Module>>
fn imports(&self) -> Vec<Arc<dyn Module>>
Imported modules that should be registered before this module.
Sourcefn providers(&self) -> Result<Vec<ProviderDefinition>>
fn providers(&self) -> Result<Vec<ProviderDefinition>>
Providers exported into the application container.
Sourcefn exports(&self) -> Result<Vec<ProviderToken>>
fn exports(&self) -> Result<Vec<ProviderToken>>
Providers this module exposes to importing modules.
Sourcefn is_global(&self) -> bool
fn is_global(&self) -> bool
Whether exported providers should be visible to every module scope.
Sourcefn middleware(&self) -> Vec<Arc<dyn Middleware>>
fn middleware(&self) -> Vec<Arc<dyn Middleware>>
Middleware applied to controllers and direct routes declared by this module.
Sourcefn controllers(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<ControllerDefinition>>
fn controllers( &self, _module_ref: &ModuleRef, ) -> Result<Vec<ControllerDefinition>>
Controller route groups built with access to the provider container.
Sourcefn routes(&self) -> Result<Vec<RouteDefinition>>
fn routes(&self) -> Result<Vec<RouteDefinition>>
Framework-neutral routes contributed directly by this module.
Sourcefn gateways(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<WebSocketGatewayDefinition>>
fn gateways( &self, _module_ref: &ModuleRef, ) -> Result<Vec<WebSocketGatewayDefinition>>
WebSocket gateways contributed by this module.
Sourcefn message_patterns(
&self,
_module_ref: &ModuleRef,
) -> Result<Vec<MessagePatternDefinition>>
fn message_patterns( &self, _module_ref: &ModuleRef, ) -> Result<Vec<MessagePatternDefinition>>
Microservice message patterns contributed by this module.
Sourcefn on_module_init(&self, _module_ref: &ModuleRef) -> Result<()>
fn on_module_init(&self, _module_ref: &ModuleRef) -> Result<()>
Lifecycle hook called after imports and providers are registered.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".