pub trait App<S>:
Send
+ Sync
+ Sized{
type Cli: Args + RunCommand<Self, S> + Send + Sync;
Show 16 methods
// Required method
fn provide_state<'life0, 'async_trait>(
&'life0 self,
context: AppContext,
) -> Pin<Box<dyn Future<Output = RoadsterResult<S>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
// Provided methods
fn async_config_sources(
&self,
_environment: &Environment,
) -> RoadsterResult<Vec<Box<dyn AsyncSource + Send + Sync>>> { ... }
fn init_tracing(&self, config: &AppConfig) -> RoadsterResult<()> { ... }
fn metadata(&self, _config: &AppConfig) -> RoadsterResult<AppMetadata> { ... }
fn sea_orm_connection_options(
&self,
config: &AppConfig,
) -> RoadsterResult<ConnectOptions> { ... }
fn diesel_connection_customizer<C>(
&self,
_config: &AppConfig,
) -> RoadsterResult<Option<Box<dyn CustomizeConnection<C, Error>>>>
where C: 'static + Connection + R2D2Connection { ... }
fn diesel_pg_connection_customizer(
&self,
_config: &AppConfig,
) -> RoadsterResult<Box<dyn CustomizeConnection<DieselPgConn, Error>>> { ... }
fn diesel_mysql_connection_customizer(
&self,
_config: &AppConfig,
) -> RoadsterResult<Box<dyn CustomizeConnection<DieselMysqlConn, Error>>> { ... }
fn diesel_sqlite_connection_customizer(
&self,
_config: &AppConfig,
) -> RoadsterResult<Box<dyn CustomizeConnection<DieselSqliteConn, Error>>> { ... }
fn diesel_pg_async_connection_customizer(
&self,
_config: &AppConfig,
) -> RoadsterResult<Box<dyn CustomizeConnection<DieselPgConnAsync, PoolError>>> { ... }
fn diesel_mysql_async_connection_customizer(
&self,
_config: &AppConfig,
) -> RoadsterResult<Box<dyn CustomizeConnection<DieselMysqlConnAsync, PoolError>>> { ... }
fn migrators(&self, _state: &S) -> RoadsterResult<Vec<Box<dyn Migrator<S>>>> { ... }
fn lifecycle_handlers<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut LifecycleHandlerRegistry<Self, S>,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn health_checks<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut HealthCheckRegistry,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn services<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut ServiceRegistry<Self, S>,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait { ... }
fn graceful_shutdown_signal<'life0, 'async_trait>(
self: Arc<Self>,
_state: &'life0 S,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
}Required Associated Types§
Required Methods§
Sourcefn provide_state<'life0, 'async_trait>(
&'life0 self,
context: AppContext,
) -> Pin<Box<dyn Future<Output = RoadsterResult<S>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn provide_state<'life0, 'async_trait>(
&'life0 self,
context: AppContext,
) -> Pin<Box<dyn Future<Output = RoadsterResult<S>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Provide the app state that will be used throughout the app. The state can simply be the
provided AppContext, or a custom type that implements FromRef to allow Roadster to
extract its AppContext when needed.
See the following for more details regarding FromRef: https://docs.rs/axum/0.7.5/axum/extract/trait.FromRef.html
Provided Methods§
fn async_config_sources( &self, _environment: &Environment, ) -> RoadsterResult<Vec<Box<dyn AsyncSource + Send + Sync>>>
fn init_tracing(&self, config: &AppConfig) -> RoadsterResult<()>
fn metadata(&self, _config: &AppConfig) -> RoadsterResult<AppMetadata>
fn sea_orm_connection_options( &self, config: &AppConfig, ) -> RoadsterResult<ConnectOptions>
fn diesel_connection_customizer<C>(
&self,
_config: &AppConfig,
) -> RoadsterResult<Option<Box<dyn CustomizeConnection<C, Error>>>>where
C: 'static + Connection + R2D2Connection,
fn diesel_pg_connection_customizer( &self, _config: &AppConfig, ) -> RoadsterResult<Box<dyn CustomizeConnection<DieselPgConn, Error>>>
fn diesel_mysql_connection_customizer( &self, _config: &AppConfig, ) -> RoadsterResult<Box<dyn CustomizeConnection<DieselMysqlConn, Error>>>
fn diesel_sqlite_connection_customizer( &self, _config: &AppConfig, ) -> RoadsterResult<Box<dyn CustomizeConnection<DieselSqliteConn, Error>>>
fn diesel_pg_async_connection_customizer( &self, _config: &AppConfig, ) -> RoadsterResult<Box<dyn CustomizeConnection<DieselPgConnAsync, PoolError>>>
fn diesel_mysql_async_connection_customizer( &self, _config: &AppConfig, ) -> RoadsterResult<Box<dyn CustomizeConnection<DieselMysqlConnAsync, PoolError>>>
fn migrators(&self, _state: &S) -> RoadsterResult<Vec<Box<dyn Migrator<S>>>>
fn lifecycle_handlers<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut LifecycleHandlerRegistry<Self, S>,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Sourcefn health_checks<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut HealthCheckRegistry,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn health_checks<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut HealthCheckRegistry,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Provide the crate::health::check::HealthChecks to use throughout the app.
Sourcefn services<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut ServiceRegistry<Self, S>,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn services<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_registry: &'life1 mut ServiceRegistry<Self, S>,
_state: &'life2 S,
) -> Pin<Box<dyn Future<Output = RoadsterResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Provide the crate::service::AppServices to run in the app.
Sourcefn graceful_shutdown_signal<'life0, 'async_trait>(
self: Arc<Self>,
_state: &'life0 S,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn graceful_shutdown_signal<'life0, 'async_trait>(
self: Arc<Self>,
_state: &'life0 S,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Override to provide a custom shutdown signal. Roadster provides some default shutdown signals, but it may be desirable to provide a custom signal in order to, e.g., shutdown the server when a particular API is called.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.