save
This commit is contained in:
parent
5464c78e37
commit
4823c55e8b
|
@ -6,11 +6,20 @@ use std::io::Error;
|
||||||
|
|
||||||
struct ToStream<T>(T);
|
struct ToStream<T>(T);
|
||||||
|
|
||||||
|
impl<T> ToStream<T> {
|
||||||
|
fn get_field(self: Pin<&mut Self>) -> Pin<&mut T> {
|
||||||
|
unsafe { self.map_unchecked_mut(|s| &mut s.0) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl <T : Unpin> Unpin for ToStream<T>{}
|
||||||
|
|
||||||
impl <T : AsyncRead> Stream for ToStream<T>{
|
impl <T : AsyncRead> Stream for ToStream<T>{
|
||||||
type Item = Result<Bytes, Error>;
|
type Item = Result<Bytes, Error>;
|
||||||
|
|
||||||
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||||
let mut buff: [u8; 1024] = [0; 1024];
|
let mut buff: [u8; 1024] = [0; 1024];
|
||||||
self.0.poll_read(cx, &mut buff[..]).map_ok(|l| {Bytes::copy_from_slice(&buff[0..l])}) // il manque Option
|
let mut t = self.get_field();
|
||||||
|
t.poll_read(cx, &mut buff[..]).map_ok(|l| {Bytes::copy_from_slice(&buff[0..l])}).map(|res| Some(res))
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue