From 31ea0fe3fe35906638df73758d151da0818ee917 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Thu, 7 Mar 2024 14:57:41 -0700 Subject: [PATCH] fix async cycle --- core/startos/src/version/mod.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/core/startos/src/version/mod.rs b/core/startos/src/version/mod.rs index 8fc6475f0..8ff42522f 100644 --- a/core/startos/src/version/mod.rs +++ b/core/startos/src/version/mod.rs @@ -1,7 +1,8 @@ use std::cmp::Ordering; use color_eyre::eyre::eyre; -use futures::Future; +use futures::future::BoxFuture; +use futures::{Future, FutureExt}; use imbl_value::InternedString; use crate::prelude::*; @@ -86,11 +87,11 @@ where } } } - fn migrate_from_unchecked( - &self, - version: &V, - db: &PatchDb, - ) -> impl Future> + Send { + fn migrate_from_unchecked<'a, V: VersionT>( + &'a self, + version: &'a V, + db: &'a PatchDb, + ) -> BoxFuture<'a, Result<(), Error>> { async { let previous = Self::Previous::new(); if version.semver() < previous.semver() { @@ -109,12 +110,13 @@ where self.commit(db).await?; Ok(()) } + .boxed() } - fn rollback_to_unchecked( - &self, - version: &V, - db: &PatchDb, - ) -> impl Future> + Send { + fn rollback_to_unchecked<'a, V: VersionT>( + &'a self, + version: &'a V, + db: &'a PatchDb, + ) -> BoxFuture<'a, Result<(), Error>> { async { let previous = Self::Previous::new(); tracing::info!("{} -> {}", self.semver(), previous.semver(),); @@ -133,6 +135,7 @@ where } Ok(()) } + .boxed() } }