pub fn new(task: T, reg: AbortRegistration) -> Self {
        Self { task, inner: reg.inner }
    }
Creates a new `Abortable` future/stream using an existing `AbortRegistration`.
`AbortRegistration`s can be acquired through `AbortHandle::new`.

When `abort` is called on the handle tied to `reg` or if `abort` has
already been called, the future/stream will complete immediately without making
any further progress.

# Examples:

Usage with futures:

```
# futures::executor::block_on(async {
use futures::future::{Abortable, AbortHandle, Aborted};

let (abort_handle, abort_registration) = AbortHandle::new_pair();
let future = Abortable::new(async { 2 }, abort_registration);
abort_handle.abort();
assert_eq!(future.await, Err(Aborted));
# });
```

Usage with streams:

```
# futures::executor::block_on(async {
# use futures::future::{Abortable, AbortHandle};
# use futures::stream::{self, StreamExt};

let (abort_handle, abort_registration) = AbortHandle::new_pair();
let mut stream = Abortable::new(stream::iter(vec![1, 2, 3]), abort_registration);
abort_handle.abort();
assert_eq!(stream.next().await, None);
# });
```
futures-util/src/abortable.rs