mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-25 12:00:35 +00:00
ci: test more things with miri (#6885)
This commit is contained in:
parent
9cc4a81678
commit
161b8c80d5
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
@ -17,6 +17,8 @@ env:
|
||||
# Change to specific Rust release to pin
|
||||
rust_stable: stable
|
||||
rust_nightly: nightly-2024-05-05
|
||||
# Pin a specific miri version
|
||||
rust_miri_nightly: nightly-2024-09-19
|
||||
rust_clippy: '1.77'
|
||||
# When updating this, also update:
|
||||
# - README.md
|
||||
@ -413,17 +415,19 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Rust ${{ env.rust_nightly }}
|
||||
- name: Install Rust ${{ env.rust_miri_nightly }}
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
toolchain: ${{ env.rust_nightly }}
|
||||
toolchain: ${{ env.rust_miri_nightly }}
|
||||
components: miri
|
||||
- name: Install cargo-nextest
|
||||
uses: taiki-e/install-action@v2
|
||||
with:
|
||||
tool: cargo-nextest
|
||||
- uses: Swatinem/rust-cache@v2
|
||||
- name: miri
|
||||
# Many of tests in tokio/tests and doctests use #[tokio::test] or
|
||||
# #[tokio::main] that calls epoll_create1 that Miri does not support.
|
||||
run: |
|
||||
cargo miri test --features full --lib --no-fail-fast
|
||||
cargo miri nextest run --features full --lib --tests --no-fail-fast
|
||||
working-directory: tokio
|
||||
env:
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields
|
||||
|
@ -1,4 +1,5 @@
|
||||
#[test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
fn compile_fail_full() {
|
||||
let t = trybuild::TestCases::new();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))]
|
||||
|
||||
use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader};
|
||||
use tokio::join;
|
||||
|
@ -1,5 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
// Blocked on https://github.com/rust-lang/miri/issues/3911
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use std::rc::Rc;
|
||||
use std::sync::Arc;
|
||||
|
@ -92,6 +92,7 @@ async fn single_short_delay() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)] // Too slow on miri.
|
||||
async fn multi_delay_at_start() {
|
||||
time::pause();
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(not(target_os = "wasi"))] // Wasi doesn't support UDP
|
||||
#![cfg(not(miri))] // No `socket` in Miri.
|
||||
|
||||
use tokio::net::UdpSocket;
|
||||
use tokio_stream::StreamExt;
|
||||
|
@ -9,6 +9,7 @@ use std::net::TcpStream;
|
||||
use std::thread;
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn echo_server() {
|
||||
const N: usize = 1024;
|
||||
|
||||
|
@ -22,6 +22,7 @@ use tokio::net::UdpSocket;
|
||||
/// Since we are both sending and receiving, that should happen once per 64 packets, because budgets are of size 128
|
||||
/// and there are two budget events per packet, a send and a recv.
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn coop_budget_udp_send_recv() {
|
||||
const BUDGET: usize = 128;
|
||||
const N_ITERATIONS: usize = 1024;
|
||||
|
@ -5,6 +5,7 @@ use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn copy() {
|
||||
let dir = tempdir().unwrap();
|
||||
|
||||
@ -21,6 +22,7 @@ async fn copy() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn copy_permissions() {
|
||||
let dir = tempdir().unwrap();
|
||||
let from_path = dir.path().join("foo.txt");
|
||||
|
@ -203,6 +203,7 @@ async fn set_max_buf_size_write() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
#[cfg(unix)]
|
||||
async fn file_debug_fmt() {
|
||||
let tempfile = tempfile();
|
||||
|
@ -7,6 +7,7 @@ use std::io::Write;
|
||||
use tempfile::tempdir;
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn test_hard_link() {
|
||||
let dir = tempdir().unwrap();
|
||||
let src = dir.path().join("src.txt");
|
||||
|
@ -5,6 +5,7 @@ use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn try_exists() {
|
||||
let dir = tempdir().unwrap();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(unix, feature = "full"))]
|
||||
#![cfg(all(unix, feature = "full", not(miri)))]
|
||||
|
||||
use std::os::unix::io::{AsRawFd, RawFd};
|
||||
use std::sync::{
|
||||
@ -655,6 +655,7 @@ fn send_oob_data<S: AsRawFd>(stream: &S, data: &[u8]) -> io::Result<usize> {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn clear_ready_matching_clears_ready() {
|
||||
use tokio::io::{Interest, Ready};
|
||||
|
||||
@ -678,6 +679,7 @@ async fn clear_ready_matching_clears_ready() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn clear_ready_matching_clears_ready_mut() {
|
||||
use tokio::io::{Interest, Ready};
|
||||
|
||||
@ -702,6 +704,7 @@ async fn clear_ready_matching_clears_ready_mut() {
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn await_error_readiness_timestamping() {
|
||||
use std::net::{Ipv4Addr, SocketAddr};
|
||||
|
||||
@ -758,6 +761,7 @@ fn configure_timestamping_socket(udp_socket: &std::net::UdpSocket) -> std::io::R
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn await_error_readiness_invalid_address() {
|
||||
use std::net::{Ipv4Addr, SocketAddr};
|
||||
use tokio::io::{Interest, Ready};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind()
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi does not support bind()
|
||||
|
||||
use std::time::Duration;
|
||||
use tokio::io::{self, copy_bidirectional, AsyncReadExt, AsyncWriteExt};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
// Wasi does not support panic recovery or threading
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))]
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio::runtime;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi does not support bind
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio::runtime;
|
||||
|
@ -79,6 +79,7 @@ async fn read_to_end_uninit() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)] // too slow with miri
|
||||
async fn read_to_end_doesnt_grow_with_capacity() {
|
||||
let arr: Vec<u8> = (0..100).collect();
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(all(feature = "full", not(miri)))]
|
||||
|
||||
use tokio::io::AsyncReadExt;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery or bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support panic recovery or bind
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
|
@ -23,6 +23,7 @@ async fn lookup_str_socket_addr() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn resolve_dns() -> io::Result<()> {
|
||||
let mut hosts = net::lookup_host("localhost:3000").await?;
|
||||
let host = hosts.next().unwrap();
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))]
|
||||
#![cfg(panic = "unwind")]
|
||||
|
||||
use std::error::Error;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt, Interest};
|
||||
use tokio::net::unix::pipe;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi does not support panic recovery
|
||||
|
||||
use tokio::net::TcpStream;
|
||||
use tokio::sync::oneshot;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", unix))]
|
||||
#![cfg(all(feature = "full", unix, not(miri)))]
|
||||
|
||||
use tokio::process::Command;
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
// This tests test the behavior of `process::Command::spawn` when it is used
|
||||
// outside runtime, and when `process::Child::wait ` is used in a different
|
||||
// runtime from which `process::Command::spawn` is used.
|
||||
#![cfg(all(unix, not(target_os = "freebsd")))]
|
||||
#![cfg(all(unix, not(target_os = "freebsd"), not(miri)))]
|
||||
|
||||
use std::process::Stdio;
|
||||
use tokio::{process::Command, runtime::Runtime};
|
||||
|
@ -7,7 +7,7 @@
|
||||
// It is expected that `EVFILT_WRITE` would be returned with either the
|
||||
// `EV_EOF` or `EV_ERROR` flag set. If either flag is set a write would be
|
||||
// attempted, but that does not seem to occur.
|
||||
#![cfg(all(unix, not(target_os = "freebsd")))]
|
||||
#![cfg(all(unix, not(target_os = "freebsd"), not(miri)))]
|
||||
|
||||
use std::process::Stdio;
|
||||
use std::time::Duration;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use futures::future::join_all;
|
||||
use std::process::Stdio;
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(unix, feature = "process"))]
|
||||
#![cfg(all(unix, feature = "process", not(miri)))]
|
||||
#![warn(rust_2018_idioms)]
|
||||
|
||||
use std::io::ErrorKind;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(windows)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use tokio::process::Command;
|
||||
use windows_sys::Win32::System::Threading::GetProcessId;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi cannot run system commands
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi cannot run system commands
|
||||
|
||||
use tokio::process::Command;
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![allow(unknown_lints, unexpected_cfgs)]
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(miri))] // Possible bug on Miri.
|
||||
|
||||
use tokio::runtime::Runtime;
|
||||
use tokio::sync::oneshot;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#![allow(clippy::needless_range_loop)]
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
// Tests to run on both current-thread & multi-thread runtime variants.
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(all(feature = "full", not(miri)))]
|
||||
|
||||
// All io tests that deal with shutdown is currently ignored because there are known bugs in with
|
||||
// shutting down the io driver while concurrently registering new resources. See
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![allow(unknown_lints, unexpected_cfgs)]
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
// Too slow on miri.
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))]
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
@ -321,6 +322,8 @@ fn start_stop_callbacks_called() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
// too slow on miri
|
||||
#[cfg_attr(miri, ignore)]
|
||||
fn blocking() {
|
||||
// used for notifying the main thread
|
||||
const NUM: usize = 1_000;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri.
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri.
|
||||
|
||||
use tokio::signal::unix::{signal, SignalKind};
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri.
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(panic = "unwind")]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri.
|
||||
|
||||
use std::error::Error;
|
||||
use tokio::runtime::Builder;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` on Miri.
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))] // No `sigaction` in Miri.
|
||||
|
||||
mod support {
|
||||
pub mod signal;
|
||||
|
@ -680,6 +680,7 @@ async fn try_reserve_many_on_closed_channel() {
|
||||
}
|
||||
|
||||
#[maybe_tokio_test]
|
||||
#[cfg_attr(miri, ignore)] // Too slow on miri.
|
||||
async fn try_reserve_many_full() {
|
||||
// Reserve n capacity and send k messages
|
||||
for n in 1..100 {
|
||||
|
@ -59,6 +59,7 @@ fn readiness() {
|
||||
/// is aborted prematurely.
|
||||
#[tokio::test]
|
||||
#[cfg(feature = "full")]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn aborted_future_1() {
|
||||
use std::time::Duration;
|
||||
use tokio::time::{interval, timeout};
|
||||
|
@ -173,6 +173,7 @@ async fn write_order() {
|
||||
|
||||
// A single RwLock is contested by tasks in multiple threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
#[cfg_attr(miri, ignore)] // Too slow on miri.
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 8)]
|
||||
async fn multithreaded() {
|
||||
use futures::stream::{self, StreamExt};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support threads
|
||||
|
||||
use tokio::{runtime, task, time};
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
use tokio::sync::{mpsc, oneshot};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
use tokio::sync::oneshot;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use std::io::{Error, ErrorKind, Result};
|
||||
use std::io::{Read, Write};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use std::io::Read;
|
||||
use std::io::Result;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::io::AsyncReadExt;
|
||||
use tokio::net::TcpStream;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use std::time::Duration;
|
||||
use tokio::net::TcpSocket;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use std::io::Result;
|
||||
use std::io::{Read, Write};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt, Interest};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
@ -1,5 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(miri))] // Too slow on miri.
|
||||
|
||||
use rand::SeedableRng;
|
||||
use rand::{rngs::StdRng, Rng};
|
||||
|
@ -1,5 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(miri))] // Too slow on Miri.
|
||||
|
||||
use std::future::Future;
|
||||
use std::task::Context;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind or UDP
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi does not support bind or UDP
|
||||
|
||||
use std::future::poll_fn;
|
||||
use std::io;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(all(unix, not(target_os = "dragonfly")))]
|
||||
#![cfg(all(unix, not(target_os = "dragonfly"), not(miri)))]
|
||||
|
||||
use tokio::net::UnixStream;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use tokio::io::ReadBuf;
|
||||
use tokio::net::UnixDatagram;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use futures::future::try_join;
|
||||
use std::io;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use tokio::io::{AsyncRead, AsyncReadExt, AsyncWrite, AsyncWriteExt};
|
||||
use tokio::net::UnixStream;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#![cfg(feature = "full")]
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(unix)]
|
||||
#![cfg(not(miri))]
|
||||
|
||||
use std::io;
|
||||
#[cfg(target_os = "android")]
|
||||
|
Loading…
x
Reference in New Issue
Block a user