| 1 | use super::assert_stream; |
| 2 | use crate::stream::{AbortHandle, Abortable}; |
| 3 | use crate::Stream; |
| 4 | |
| 5 | /// Creates a new `Abortable` stream and an `AbortHandle` which can be used to stop it. |
| 6 | /// |
| 7 | /// This function is a convenient (but less flexible) alternative to calling |
| 8 | /// `AbortHandle::new` and `Abortable::new` manually. |
| 9 | /// |
| 10 | /// This function is only available when the `std` or `alloc` feature of this |
| 11 | /// library is activated, and it is activated by default. |
| 12 | pub fn abortable<St>(stream: St) -> (Abortable<St>, AbortHandle) |
| 13 | where |
| 14 | St: Stream, |
| 15 | { |
| 16 | let (handle: AbortHandle, reg: AbortRegistration) = AbortHandle::new_pair(); |
| 17 | let abortable: Abortable = assert_stream::<St::Item, _>(Abortable::new(task:stream, reg)); |
| 18 | (abortable, handle) |
| 19 | } |
| 20 | |