vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit b8010be26b4e2d489f55ba01622f9b6e1685b3b1
parent f76b8a32ca8e8b7ad97886d96622826dc8665311
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sun,  2 May 2021 17:49:25 +0200

Extract some FromDb trait impls outside the macros so they aren't repeated, and fix some clippy lints

Diffstat:
Msrc/api/icons.rs | 2+-
Msrc/db/mod.rs | 29+++++++++++++++++++----------
2 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/src/api/icons.rs b/src/api/icons.rs @@ -354,8 +354,8 @@ struct Icon { impl Icon { const fn new(priority: u8, href: String) -> Self { Self { - href, priority, + href, } } } diff --git a/src/db/mod.rs b/src/db/mod.rs @@ -157,6 +157,24 @@ pub trait FromDb { fn from_db(self) -> Self::Output; } +impl<T: FromDb> FromDb for Vec<T> { + type Output = Vec<T::Output>; + #[allow(clippy::wrong_self_convention)] + #[inline(always)] + fn from_db(self) -> Self::Output { + self.into_iter().map(crate::db::FromDb::from_db).collect() + } +} + +impl<T: FromDb> FromDb for Option<T> { + type Output = Option<T::Output>; + #[allow(clippy::wrong_self_convention)] + #[inline(always)] + fn from_db(self) -> Self::Output { + self.map(crate::db::FromDb::from_db) + } +} + // For each struct eg. Cipher, we create a CipherDb inside a module named __$db_model (where $db is sqlite, mysql or postgresql), // to implement the Diesel traits. We also provide methods to convert between them and the basic structs. Later, that module will be auto imported when using db_run! #[macro_export] @@ -197,18 +215,9 @@ macro_rules! db_object { impl crate::db::FromDb for [<$name Db>] { type Output = super::$name; + #[allow(clippy::wrong_self_convention)] #[inline(always)] fn from_db(self) -> Self::Output { super::$name { $( $field: self.$field, )+ } } } - - impl crate::db::FromDb for Vec<[<$name Db>]> { - type Output = Vec<super::$name>; - #[inline(always)] fn from_db(self) -> Self::Output { self.into_iter().map(crate::db::FromDb::from_db).collect() } - } - - impl crate::db::FromDb for Option<[<$name Db>]> { - type Output = Option<super::$name>; - #[inline(always)] fn from_db(self) -> Self::Output { self.map(crate::db::FromDb::from_db) } - } } }; }