diff --git a/easytier/src/proto/utils.rs b/easytier/src/proto/utils.rs index 0f37f89b..82980692 100644 --- a/easytier/src/proto/utils.rs +++ b/easytier/src/proto/utils.rs @@ -1,9 +1,13 @@ +use crate::utils::MapTryInto; +use derivative::Derivative; use derive_more::{Deref, DerefMut, From, IntoIterator}; use itertools::Itertools; use serde::{Deserialize, Serialize}; -use crate::utils::MapTryInto; -pub trait MessageModel: Into + for<'m> TryFrom<&'m Message> {} +pub trait MessageModel: + Into + for<'m> TryFrom<&'m Message> +{ +} impl MessageModel for Model where @@ -13,16 +17,27 @@ where } #[derive( - Debug, Clone, PartialEq, Eq, Hash, From, Deref, DerefMut, Serialize, Deserialize, IntoIterator, + Derivative, + Debug, + Clone, + PartialEq, + Eq, + Hash, + From, + Deref, + DerefMut, + Serialize, + Deserialize, + IntoIterator, )] +#[derivative(Default(bound = ""))] #[serde(transparent)] #[into_iterator(owned, ref, ref_mut)] pub struct RepeatedMessageModel(Vec); -impl Default for RepeatedMessageModel -{ - fn default() -> Self { - Self(vec![]) +impl RepeatedMessageModel { + pub fn into_inner(self) -> Vec { + self.0 } } @@ -34,7 +49,7 @@ where type Error = >::Error; fn try_from(value: &'m Vec) -> Result { - Ok(Self(value.map_try_into().collect::, _>>()?)) + Ok(Self(value.into_iter().map_try_into().try_collect()?)) } }