Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. pub enum StreamSelector {
  2. TlsConnecting(futures::future::FutureResult<futures::future::FutureResult<i32, ()>, ()>),
  3. TlsConnected(futures::future::FutureResult<i32, ()>),
  4. }
  5.  
  6. impl futures::Future for StreamSelector {
  7. type Item = i32;
  8. type Error = ();
  9.  
  10. fn poll(&mut self) -> futures::Poll<Self::Item, Self::Error> {
  11. match self {
  12. StreamSelector::TlsConnecting(inner) => match inner.poll() {
  13. Ok(futures::Async::Ready(f)) => {
  14. *self = StreamSelector::TlsConnected(f);
  15. self.poll()
  16. },
  17. Ok(futures::Async::NotReady) => Ok(futures::Async::NotReady),
  18. Err(err) => Err(err),
  19. },
  20. StreamSelector::TlsConnected(f) => f.poll(),
  21. }
  22. }
  23. }
  24.  
  25. #[test]
  26. fn test_stream_selector() {
  27. let mut stream_selector = StreamSelector::TlsConnecting(futures::IntoFuture::into_future(Ok(futures::IntoFuture::into_future(Ok(5)))));
  28. assert_eq!(futures::Future::poll(&mut stream_selector), Ok(futures::Async::Ready(5)));
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement