Expand description
Trait abstractions over a database backend.
DatabaseProvider is dyn-safe (callers hold Arc<dyn DatabaseProvider>)
and uses #[async_trait]. DatabaseProviderExt is generic, never used
through a trait object, and uses native async fn.