Sha256: 9d047190387ed8334113687003c23407c80c858411f5ec7d5c505500f9639dfc

Contents?: true

Size: 1.48 KB

Versions: 27

Compression:

Stored size: 1.48 KB

Contents

fn assert_is_object_safe<T>() {}

#[test]
fn future() {
    // `FutureExt`, `TryFutureExt` and `UnsafeFutureObj` are not object safe.
    use futures::future::{FusedFuture, Future, TryFuture};

    assert_is_object_safe::<&dyn Future<Output = ()>>();
    assert_is_object_safe::<&dyn FusedFuture<Output = ()>>();
    assert_is_object_safe::<&dyn TryFuture<Ok = (), Error = (), Output = Result<(), ()>>>();
}

#[test]
fn stream() {
    // `StreamExt` and `TryStreamExt` are not object safe.
    use futures::stream::{FusedStream, Stream, TryStream};

    assert_is_object_safe::<&dyn Stream<Item = ()>>();
    assert_is_object_safe::<&dyn FusedStream<Item = ()>>();
    assert_is_object_safe::<&dyn TryStream<Ok = (), Error = (), Item = Result<(), ()>>>();
}

#[test]
fn sink() {
    // `SinkExt` is not object safe.
    use futures::sink::Sink;

    assert_is_object_safe::<&dyn Sink<(), Error = ()>>();
}

#[test]
fn io() {
    // `AsyncReadExt`, `AsyncWriteExt`, `AsyncSeekExt` and `AsyncBufReadExt` are not object safe.
    use futures::io::{AsyncBufRead, AsyncRead, AsyncSeek, AsyncWrite};

    assert_is_object_safe::<&dyn AsyncRead>();
    assert_is_object_safe::<&dyn AsyncWrite>();
    assert_is_object_safe::<&dyn AsyncSeek>();
    assert_is_object_safe::<&dyn AsyncBufRead>();
}

#[test]
fn task() {
    // `ArcWake`, `SpawnExt` and `LocalSpawnExt` are not object safe.
    use futures::task::{LocalSpawn, Spawn};

    assert_is_object_safe::<&dyn Spawn>();
    assert_is_object_safe::<&dyn LocalSpawn>();
}

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/futures-0.3.31/tests/object_safety.rs
wasmtime-29.0.0 ./ext/cargo-vendor/futures-0.3.31/tests/object_safety.rs
wasmtime-28.0.0 ./ext/cargo-vendor/futures-0.3.31/tests/object_safety.rs
wasmtime-27.0.0 ./ext/cargo-vendor/futures-0.3.31/tests/object_safety.rs
wasmtime-26.0.0 ./ext/cargo-vendor/futures-0.3.31/tests/object_safety.rs
wasmtime-25.0.2 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-25.0.1 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-25.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-24.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-23.0.2 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-22.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-21.0.1 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-20.0.2 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-20.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-18.0.3 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-17.0.1 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-17.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-16.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-15.0.1 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs
wasmtime-15.0.0 ./ext/cargo-vendor/futures-0.3.30/tests/object_safety.rs