Created
March 10, 2020 10:28
-
-
Save niklasad1/da56da73869ef48f10cd906b1e8a16b6 to your computer and use it in GitHub Desktop.
[stablecoin]: make it compile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/ringbuffer.rs b/src/ringbuffer.rs | |
index 600f9ed..a57a88f 100644 | |
--- a/src/ringbuffer.rs | |
+++ b/src/ringbuffer.rs | |
@@ -4,27 +4,27 @@ use frame_support::storage::{StorageValue, StorageMap}; | |
pub type Index = u16; | |
-pub struct RingBufferTransient<T> { | |
+pub struct RingBufferTransient<T, I, B, M> { | |
start: Index, | |
end: Index, | |
- _t: PhantomData<T>, | |
+ _t: PhantomData<(T, I, B, M)>, | |
} | |
-impl<T, I, B, M> RingBufferTransient<T> | |
+impl<T, I, B, M> RingBufferTransient<T, I, B, M> | |
where | |
I: Codec + EncodeLike, | |
B: StorageValue<(Index, Index), Query = (Index, Index)>, | |
M: StorageMap<Index, I, Query = I>, | |
- T: RingBufferTrait<I, B, M, Item = I, Bounds = B, Map = M> | |
+ T: RingBufferTrait<I, Item = I, Bounds = B, Map = M> | |
{ | |
- fn new() -> RingBufferTransient<T> { | |
- let (start, end) = RingBufferTrait::Bounds::get(); | |
- RingBufferTransient {start, end, _t: PhantomData } | |
+ fn new() -> RingBufferTransient<T, I, B, M> { | |
+ let (start, end) = <<T as RingBufferTrait<I>>::Bounds>::get(); | |
+ RingBufferTransient { start, end, _t: PhantomData } | |
} | |
} | |
-pub trait RingBufferTrait<I, B, M> | |
+pub trait RingBufferTrait<I> | |
where | |
I: Codec + EncodeLike, | |
{ | |
@@ -40,12 +40,12 @@ where | |
fn pop(&mut self) -> Option<Self::Item>; | |
} | |
-impl<T, I, B, M> RingBufferTrait<I, B, M> for RingBufferTransient<T> | |
+impl<T, I, B, M> RingBufferTrait<I> for RingBufferTransient<T, I, B, M> | |
where | |
I: Codec + EncodeLike, | |
B: StorageValue<(Index, Index), Query = (Index, Index)>, | |
M: StorageMap<Index, I, Query = I>, | |
- T: RingBufferTrait<I, B, M>, | |
+ T: RingBufferTrait<I>, | |
{ | |
type Item = I; | |
type Bounds = B; | |
@@ -74,7 +74,7 @@ where | |
fn push_front(&mut self, item: Self::Item) { | |
if self.start == self.end { | |
- <Self as RingBufferTrait<I, B, M>>::push(self, item); | |
+ <Self as RingBufferTrait<I>>::push(self, item); | |
return; | |
} | |
let index = self.start.wrapping_sub(1); | |
@@ -88,7 +88,7 @@ where | |
} | |
let item = Self::Map::take(self.start); | |
self.start = self.start.wrapping_add(1); | |
- | |
+ | |
item.into() | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment