pub trait Plugin {
// Provided methods
async fn upload_provider(
&self,
context: &UploadProviderContext<'_>,
) -> Option<impl UploadProvider + Send + Sync> { ... }
async fn database_provider(
&self,
_context: &mut DatabaseProviderContext<'_>,
) -> Option<(Arc<dyn Database + Send + Sync>, Box<dyn Any + Send + Sync>)> { ... }
async fn run<U: UploadProvider>(
&self,
context: &mut RunContext<'_, U>,
) -> Result<Router<Arc<RouterStateInner>>> { ... }
}Expand description
A plugin can be used to extend Rhombus with custom functionality, themes, or localization.
§Order of execution
First, review and understand the Builder Order of Execution.
- The upload_provider function is called for each plugin in reverse order of plugins defined until the first plugin is found which implements a custom upload provider, which is then used. If no plugin implements a custom upload provider, the default upload provider creation process will happen.
- The run function is called for each plugin in the order they are defined.
Provided Methods§
sourceasync fn upload_provider(
&self,
context: &UploadProviderContext<'_>,
) -> Option<impl UploadProvider + Send + Sync>
async fn upload_provider( &self, context: &UploadProviderContext<'_>, ) -> Option<impl UploadProvider + Send + Sync>
Supply a custom UploadProvider.
struct MyUploadProviderPlugin;
/// Simple local upload provider wrapper
impl Plugin for MyUploadProviderPlugin {
async fn upload_provider(
&self,
context: &UploadProviderContext<'_>,
) -> Option<impl UploadProvider + Send + Sync> {
let local = LocalUploadProvider::new("myplugin-uploads".into());
Some(local)
}
}async fn database_provider( &self, _context: &mut DatabaseProviderContext<'_>, ) -> Option<(Arc<dyn Database + Send + Sync>, Box<dyn Any + Send + Sync>)>
async fn run<U: UploadProvider>( &self, context: &mut RunContext<'_, U>, ) -> Result<Router<Arc<RouterStateInner>>>
Object Safety§
This trait is not object safe.
Implementations on Foreign Types§
impl Plugin for ()
Empty plugin implementation for internal heterogeneous plugin tuples.
source§impl<P, P2> Plugin for (P, P2)
impl<P, P2> Plugin for (P, P2)
Plugin implementation for internal two plugin tuple heterogenous plugin tuple.
async fn upload_provider( &self, context: &UploadProviderContext<'_>, ) -> Option<impl UploadProvider + Send + Sync>
async fn database_provider( &self, context: &mut DatabaseProviderContext<'_>, ) -> Option<(Arc<dyn Database + Send + Sync>, Box<dyn Any + Send + Sync>)>
async fn run<U: UploadProvider>( &self, context: &mut RunContext<'_, U>, ) -> Result<Router<Arc<RouterStateInner>>>
source§impl<P: Plugin> Plugin for (P,)
impl<P: Plugin> Plugin for (P,)
Plugin implementation for internal single plugin heterogenous plugin tuple.