     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    use crate::future::Future;

    /// Conversion into a `Future`.
    #[unstable(feature = "into_future", issue = "67644")]
    pub trait IntoFuture {
        /// The output that the future will produce on completion.
        #[unstable(feature = "into_future", issue = "67644")]
        type Output;

        /// Which kind of future are we turning this into?
        #[unstable(feature = "into_future", issue = "67644")]
        type Future: Future<Output = Self::Output>;

        /// Creates a future from a value.
        #[unstable(feature = "into_future", issue = "67644")]
        fn into_future(self) -> Self::Future;
    }

    #[unstable(feature = "into_future", issue = "67644")]
    impl<F: Future> IntoFuture for F {
        type Output = F::Output;
        type Future = F;

        fn into_future(self) -> Self::Future {
            self
        }
    }