pub(crate) async fn compose_with<T: CatalogTransport + 'static>(
workspace: &Path,
open_transport: impl FnOnce() -> Result<T>,
open_catalog: impl FnOnce(T) -> CatalogManager<T>,
open_provider_store: impl FnOnce() -> Result<ProviderStore, ProviderStoreError>,
open_data_dir: impl FnOnce() -> Result<PathBuf>,
) -> Result<Runtime>