chore(protocol): address async fn in extension traits
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -1758,6 +1758,7 @@ dependencies = [
|
|||||||
"deranged",
|
"deranged",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
"ext-trait",
|
"ext-trait",
|
||||||
|
"futures",
|
||||||
"palette",
|
"palette",
|
||||||
"serde",
|
"serde",
|
||||||
"snafu",
|
"snafu",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ chrono-tz = "0.10.4"
|
|||||||
deranged = "0.5"
|
deranged = "0.5"
|
||||||
derive_more = "2.1.0"
|
derive_more = "2.1.0"
|
||||||
ext-trait = "2.0.1"
|
ext-trait = "2.0.1"
|
||||||
|
futures = "0.3.32"
|
||||||
mitsein = "0.9"
|
mitsein = "0.9"
|
||||||
palette = "0.7"
|
palette = "0.7"
|
||||||
proc-macro2 = "1.0.106"
|
proc-macro2 = "1.0.106"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ serde = ["dep:serde"]
|
|||||||
deranged = { workspace = true }
|
deranged = { workspace = true }
|
||||||
derive_more = { workspace = true }
|
derive_more = { workspace = true }
|
||||||
ext-trait = { workspace = true }
|
ext-trait = { workspace = true }
|
||||||
|
futures = { workspace = true }
|
||||||
palette = { workspace = true }
|
palette = { workspace = true }
|
||||||
snafu = { workspace = true }
|
snafu = { workspace = true }
|
||||||
strum = { workspace = true, features = ["derive"] }
|
strum = { workspace = true, features = ["derive"] }
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
use std::{error::Error, future::Future};
|
use std::{error::Error, future::Future};
|
||||||
|
|
||||||
use deranged::RangedU16;
|
use deranged::RangedU16;
|
||||||
use snafu::{ResultExt, Snafu};
|
use futures::TryFutureExt as _;
|
||||||
|
use snafu::{ResultExt as _, Snafu};
|
||||||
|
|
||||||
#[derive(
|
#[derive(
|
||||||
Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, strum::Display, strum::EnumIs,
|
Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, strum::Display, strum::EnumIs,
|
||||||
@@ -44,15 +45,15 @@ pub trait GetState {
|
|||||||
|
|
||||||
#[ext_trait::extension(pub trait IsOff)]
|
#[ext_trait::extension(pub trait IsOff)]
|
||||||
impl<T: GetState> T {
|
impl<T: GetState> T {
|
||||||
async fn is_off(&self) -> Result<bool, T::Error> {
|
fn is_off(&self) -> impl Future<Output = Result<bool, T::Error>> + Send {
|
||||||
Ok(self.get_state().await?.is_off())
|
self.get_state().map_ok(|state| state.is_off())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[ext_trait::extension(pub trait IsOn)]
|
#[ext_trait::extension(pub trait IsOn)]
|
||||||
impl<T: GetState> T {
|
impl<T: GetState> T {
|
||||||
async fn is_on(&self) -> Result<bool, T::Error> {
|
fn is_on(&self) -> impl Future<Output = Result<bool, T::Error>> + Send {
|
||||||
Ok(self.get_state().await?.is_on())
|
self.get_state().map_ok(|state| state.is_on())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,15 +64,15 @@ pub trait SetState {
|
|||||||
|
|
||||||
#[ext_trait::extension(pub trait TurnOff)]
|
#[ext_trait::extension(pub trait TurnOff)]
|
||||||
impl<T: SetState> T {
|
impl<T: SetState> T {
|
||||||
async fn turn_off(&mut self) -> Result<(), T::Error> {
|
fn turn_off(&mut self) -> impl Future<Output = Result<(), T::Error>> + Send {
|
||||||
self.set_state(State::Off).await
|
self.set_state(State::Off)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[ext_trait::extension(pub trait TurnOn)]
|
#[ext_trait::extension(pub trait TurnOn)]
|
||||||
impl<T: SetState> T {
|
impl<T: SetState> T {
|
||||||
async fn turn_on(&mut self) -> Result<(), T::Error> {
|
fn turn_on(&mut self) -> impl Future<Output = Result<(), T::Error>> + Send {
|
||||||
self.set_state(State::On).await
|
self.set_state(State::On)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user