summaryrefslogtreecommitdiffhomepage
path: root/mullvad-api/src/availability.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mullvad-api/src/availability.rs')
-rw-r--r--mullvad-api/src/availability.rs20
1 files changed, 13 insertions, 7 deletions
diff --git a/mullvad-api/src/availability.rs b/mullvad-api/src/availability.rs
index 9d5e135c15..a8ac3aa6cf 100644
--- a/mullvad-api/src/availability.rs
+++ b/mullvad-api/src/availability.rs
@@ -128,11 +128,14 @@ impl ApiAvailability {
self.acquire().state
}
- pub fn wait_for_unsuspend(&self) -> impl Future<Output = Result<(), Error>> {
+ pub fn wait_for_unsuspend(&self) -> impl Future<Output = Result<(), Error>> + use<> {
self.wait_for_state(|state| !state.is_suspended())
}
- pub fn when_bg_resumes<F: Future<Output = O>, O>(&self, task: F) -> impl Future<Output = O> {
+ pub fn when_bg_resumes<F: Future<Output = O>, O>(
+ &self,
+ task: F,
+ ) -> impl Future<Output = O> + use<F, O> {
let wait_task = self.wait_for_state(|state| !state.is_background_paused());
async move {
let _ = wait_task.await;
@@ -140,11 +143,14 @@ impl ApiAvailability {
}
}
- pub fn wait_background(&self) -> impl Future<Output = Result<(), Error>> {
+ pub fn wait_background(&self) -> impl Future<Output = Result<(), Error>> + use<> {
self.wait_for_state(|state| !state.is_background_paused())
}
- pub fn when_online<F: Future<Output = O>, O>(&self, task: F) -> impl Future<Output = O> {
+ pub fn when_online<F: Future<Output = O>, O>(
+ &self,
+ task: F,
+ ) -> impl Future<Output = O> + use<F, O> {
let wait_task = self.wait_for_state(|state| !state.is_offline());
async move {
let _ = wait_task.await;
@@ -156,10 +162,10 @@ impl ApiAvailability {
self.wait_for_state(|state| !state.is_offline())
}
- fn wait_for_state(
+ fn wait_for_state<F: Fn(State) -> bool>(
&self,
- state_ready: impl Fn(State) -> bool,
- ) -> impl Future<Output = Result<(), Error>> {
+ state_ready: F,
+ ) -> impl Future<Output = Result<(), Error>> + use<F> {
let mut rx = { self.acquire().tx.subscribe() };
let handle = self.clone();