From 30e8452a3ac62ffb0e60661f8542774ed048a9de Mon Sep 17 00:00:00 2001 From: Kiril Mihaylov Date: Mon, 15 May 2023 18:24:07 +0300 Subject: [PATCH] refactor: Removed one lifetime with the assumption all namespaces will be `&'static str` --- contracts/timealarms/src/alarms.rs | 4 +-- packages/time-oracle/src/alarms.rs | 39 ++++++++++++-------------- packages/time-oracle/src/migrate_v1.rs | 24 ++++++++-------- 3 files changed, 32 insertions(+), 35 deletions(-) diff --git a/contracts/timealarms/src/alarms.rs b/contracts/timealarms/src/alarms.rs index c35cfeb23..23253e380 100644 --- a/contracts/timealarms/src/alarms.rs +++ b/contracts/timealarms/src/alarms.rs @@ -18,11 +18,11 @@ const REPLY_ID: Id = 0; const EVENT_TYPE: &str = "timealarm"; pub(super) struct TimeAlarms<'r> { - time_alarms: Alarms<'r, 'static>, + time_alarms: Alarms<'r>, } pub(super) struct TimeAlarmsMut<'r> { - time_alarms: AlarmsMut<'r, 'static>, + time_alarms: AlarmsMut<'r>, } impl<'r> TimeAlarms<'r> { diff --git a/packages/time-oracle/src/alarms.rs b/packages/time-oracle/src/alarms.rs index 4b7430d73..2cb808ea6 100644 --- a/packages/time-oracle/src/alarms.rs +++ b/packages/time-oracle/src/alarms.rs @@ -13,11 +13,11 @@ fn as_seconds(from: Timestamp) -> TimeSeconds { from.seconds() } -struct AlarmIndexes<'a> { - alarms: MultiIndex<'a, TimeSeconds, TimeSeconds, Addr>, +struct AlarmIndexes { + alarms: MultiIndex<'static, TimeSeconds, TimeSeconds, Addr>, } -impl<'a> IndexList for AlarmIndexes<'a> { +impl IndexList for AlarmIndexes { fn get_indexes(&self) -> Box> + '_> { let v: Vec<&dyn Index> = vec![&self.alarms]; @@ -25,10 +25,7 @@ impl<'a> IndexList for AlarmIndexes<'a> { } } -fn indexed_map<'namespace>( - namespace_alarms: &'namespace str, - namespace_index: &'namespace str, -) -> IndexedMap<'namespace> { +fn indexed_map(namespace_alarms: &'static str, namespace_index: &'static str) -> IndexedMap { let indexes = AlarmIndexes { alarms: MultiIndex::new(|_, d| *d, namespace_alarms, namespace_index), }; @@ -36,7 +33,7 @@ fn indexed_map<'namespace>( IndexedMap::new(namespace_alarms, indexes) } -type IndexedMap<'namespace> = CwIndexedMap<'namespace, Addr, TimeSeconds, AlarmIndexes<'namespace>>; +type IndexedMap = CwIndexedMap<'static, Addr, TimeSeconds, AlarmIndexes>; const ALARMS_IN_DELIVERY: Deque<'static, Addr> = Deque::new("in_delivery"); @@ -49,16 +46,16 @@ pub trait AlarmsSelection { fn alarms_selection(&self, ctime: Timestamp) -> AlarmsSelectionIterator<'_>; } -pub struct Alarms<'storage, 'namespace> { +pub struct Alarms<'storage> { storage: &'storage dyn Storage, - alarms: IndexedMap<'namespace>, + alarms: IndexedMap, } -impl<'storage, 'namespace> Alarms<'storage, 'namespace> { +impl<'storage> Alarms<'storage> { pub fn new( storage: &'storage dyn Storage, - namespace_alarms: &'namespace str, - namespace_index: &'namespace str, + namespace_alarms: &'static str, + namespace_index: &'static str, ) -> Self { Self { storage, @@ -67,22 +64,22 @@ impl<'storage, 'namespace> Alarms<'storage, 'namespace> { } } -impl<'storage, 'namespace> AlarmsSelection for Alarms<'storage, 'namespace> { +impl<'storage> AlarmsSelection for Alarms<'storage> { fn alarms_selection(&self, ctime: Timestamp) -> AlarmsSelectionIterator<'_> { alarms_selection(self.storage, &self.alarms, as_seconds(ctime)) } } -pub struct AlarmsMut<'storage, 'namespace> { +pub struct AlarmsMut<'storage> { storage: &'storage mut dyn Storage, - alarms: IndexedMap<'namespace>, + alarms: IndexedMap, } -impl<'storage, 'namespace> AlarmsMut<'storage, 'namespace> { +impl<'storage> AlarmsMut<'storage> { pub fn new( storage: &'storage mut dyn Storage, - namespace_alarms: &'namespace str, - namespace_index: &'namespace str, + namespace_alarms: &'static str, + namespace_index: &'static str, ) -> Self { Self { storage, @@ -128,7 +125,7 @@ impl<'storage, 'namespace> AlarmsMut<'storage, 'namespace> { } } -impl<'storage, 'namespace> AlarmsSelection for AlarmsMut<'storage, 'namespace> { +impl<'storage> AlarmsSelection for AlarmsMut<'storage> { fn alarms_selection(&self, ctime: Timestamp) -> AlarmsSelectionIterator<'_> { alarms_selection(self.storage, &self.alarms, as_seconds(ctime)) } @@ -136,7 +133,7 @@ impl<'storage, 'namespace> AlarmsSelection for AlarmsMut<'storage, 'namespace> { fn alarms_selection<'storage>( storage: &'storage dyn Storage, - alarms: &IndexedMap<'_>, + alarms: &IndexedMap, time: TimeSeconds, ) -> AlarmsSelectionIterator<'storage> { alarms diff --git a/packages/time-oracle/src/migrate_v1.rs b/packages/time-oracle/src/migrate_v1.rs index a6fbb8e5a..7db0654aa 100644 --- a/packages/time-oracle/src/migrate_v1.rs +++ b/packages/time-oracle/src/migrate_v1.rs @@ -23,11 +23,11 @@ struct AlarmOld { pub addr: Addr, } -struct AlarmIndexes<'a> { - alarms: MultiIndex<'a, TimeSeconds, AlarmOld, Id>, +struct AlarmIndexes { + alarms: MultiIndex<'static, TimeSeconds, AlarmOld, Id>, } -impl<'a> IndexList for AlarmIndexes<'a> { +impl IndexList for AlarmIndexes { fn get_indexes(&self) -> Box> + '_> { let v: Vec<&dyn Index> = vec![&self.alarms]; @@ -35,17 +35,17 @@ impl<'a> IndexList for AlarmIndexes<'a> { } } -pub struct AlarmsOld<'a> { - namespace_alarms: &'a str, - namespace_index: &'a str, - next_id: Item<'a, Id>, +pub struct AlarmsOld { + namespace_alarms: &'static str, + namespace_index: &'static str, + next_id: Item<'static, Id>, } -impl<'a> AlarmsOld<'a> { +impl AlarmsOld { pub const fn new( - namespace_alarms: &'a str, - namespace_index: &'a str, - namespace_next_id: &'a str, + namespace_alarms: &'static str, + namespace_index: &'static str, + namespace_next_id: &'static str, ) -> Self { Self { namespace_alarms, @@ -114,7 +114,7 @@ impl<'a> AlarmsOld<'a> { Ok(()) } - fn alarms(&self) -> IndexedMap<'a, TimeSeconds, AlarmOld, AlarmIndexes<'a>> { + fn alarms(&self) -> IndexedMap<'static, TimeSeconds, AlarmOld, AlarmIndexes> { let indexes = AlarmIndexes { alarms: MultiIndex::new(|_, d| d.time, self.namespace_alarms, self.namespace_index), };