|
1 | | -fn assert_is_object_safe<T>() {} |
| 1 | +#![allow(clippy::extra_unused_type_parameters)] // https://github.com/rust-lang/rust-clippy/issues/10319 |
| 2 | + |
| 3 | +fn assert_is_object_safe<T: ?Sized>() {} |
2 | 4 |
|
3 | 5 | #[test] |
4 | 6 | fn future() { |
5 | 7 | // `FutureExt`, `TryFutureExt` and `UnsafeFutureObj` are not object safe. |
6 | 8 | use futures::future::{FusedFuture, Future, TryFuture}; |
7 | 9 |
|
8 | | - assert_is_object_safe::<&dyn Future<Output = ()>>(); |
9 | | - assert_is_object_safe::<&dyn FusedFuture<Output = ()>>(); |
10 | | - assert_is_object_safe::<&dyn TryFuture<Ok = (), Error = (), Output = Result<(), ()>>>(); |
| 10 | + assert_is_object_safe::<dyn Future<Output = ()>>(); |
| 11 | + assert_is_object_safe::<dyn FusedFuture<Output = ()>>(); |
| 12 | + assert_is_object_safe::<dyn TryFuture<Ok = (), Error = (), Output = Result<(), ()>>>(); |
11 | 13 | } |
12 | 14 |
|
13 | 15 | #[test] |
14 | 16 | fn stream() { |
15 | 17 | // `StreamExt` and `TryStreamExt` are not object safe. |
16 | 18 | use futures::stream::{FusedStream, Stream, TryStream}; |
17 | 19 |
|
18 | | - assert_is_object_safe::<&dyn Stream<Item = ()>>(); |
19 | | - assert_is_object_safe::<&dyn FusedStream<Item = ()>>(); |
20 | | - assert_is_object_safe::<&dyn TryStream<Ok = (), Error = (), Item = Result<(), ()>>>(); |
| 20 | + assert_is_object_safe::<dyn Stream<Item = ()>>(); |
| 21 | + assert_is_object_safe::<dyn FusedStream<Item = ()>>(); |
| 22 | + assert_is_object_safe::<dyn TryStream<Ok = (), Error = (), Item = Result<(), ()>>>(); |
21 | 23 | } |
22 | 24 |
|
23 | 25 | #[test] |
24 | 26 | fn sink() { |
25 | 27 | // `SinkExt` is not object safe. |
26 | 28 | use futures::sink::Sink; |
27 | 29 |
|
28 | | - assert_is_object_safe::<&dyn Sink<(), Error = ()>>(); |
| 30 | + assert_is_object_safe::<dyn Sink<(), Error = ()>>(); |
29 | 31 | } |
30 | 32 |
|
31 | 33 | #[test] |
32 | 34 | fn io() { |
33 | 35 | // `AsyncReadExt`, `AsyncWriteExt`, `AsyncSeekExt` and `AsyncBufReadExt` are not object safe. |
34 | 36 | use futures::io::{AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite}; |
35 | 37 |
|
36 | | - assert_is_object_safe::<&dyn AsyncRead>(); |
37 | | - assert_is_object_safe::<&dyn AsyncWrite>(); |
38 | | - assert_is_object_safe::<&dyn AsyncSeek>(); |
39 | | - assert_is_object_safe::<&dyn AsyncBufRead>(); |
| 38 | + assert_is_object_safe::<dyn AsyncRead>(); |
| 39 | + assert_is_object_safe::<dyn AsyncWrite>(); |
| 40 | + assert_is_object_safe::<dyn AsyncSeek>(); |
| 41 | + assert_is_object_safe::<dyn AsyncBufRead>(); |
40 | 42 | } |
41 | 43 |
|
42 | 44 | #[test] |
43 | 45 | fn task() { |
44 | 46 | // `ArcWake`, `SpawnExt` and `LocalSpawnExt` are not object safe. |
45 | 47 | use futures::task::{LocalSpawn, Spawn}; |
46 | 48 |
|
47 | | - assert_is_object_safe::<&dyn Spawn>(); |
48 | | - assert_is_object_safe::<&dyn LocalSpawn>(); |
| 49 | + assert_is_object_safe::<dyn Spawn>(); |
| 50 | + assert_is_object_safe::<dyn LocalSpawn>(); |
49 | 51 | } |
0 commit comments