Поддерживает ли язык Rust неблокирующий ввод-вывод (NIO)? - PullRequest
0 голосов
/ 26 января 2020

Поддерживает ли язык Rust неблокирующий ввод-вывод (NIO) в своем стандарте? Я искал inte rnet, но не смог найти ничего, связанного с его стандартом.

Ответы [ 2 ]

9 голосов
/ 26 января 2020

Поддерживает ли язык Rust неблокирующий ввод-вывод (NIO) в своем стандарте?

Нет .

Разработчики Rust имеют другое философия, чем Java разработчиков, и предпочитают держать довольно минималистскую стандартную библиотеку. Особенно, когда нет очевидного «лучшего» компромисса.

В настоящее время неблокирующий ввод / вывод требует использования сторонних ящиков, таких как Tokio или ASYN c -std . Хотя в будущем в стандартную библиотеку могут быть интегрированы дополнительные функции async, не было разработано никаких планов по интеграции чего-либо, кроме черт словарь .

0 голосов
/ 28 января 2020

Но да! Это называется async в Rust.

use tokio::net::TcpStream;
use tokio::prelude::*;

async fn main() {
    let mut stream = TcpStream::connect("127.0.0.1:6142").await.unwrap();
    println!("created stream");

    let result = stream.write(b"hello world\n").await;
    println!("wrote to stream; success={:?}", result.is_ok());
}

Ожидание вызова в этом примере записывает сообщение асинхронно.

...