Skip to content

Instantly share code, notes, and snippets.

@niklasad1
Created March 10, 2020 10:28
Show Gist options
  • Save niklasad1/da56da73869ef48f10cd906b1e8a16b6 to your computer and use it in GitHub Desktop.
Save niklasad1/da56da73869ef48f10cd906b1e8a16b6 to your computer and use it in GitHub Desktop.
[stablecoin]: make it compile
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