Импортируем mio::tcp::TcpStream, но получаем std::net::tcp::TcpStream

При попытке адаптировать пример сервера, не уверен, что делать с этим поведением, где TcpStream Я прошу, и тот, который я получаю, кажется совершенно другим.

Пример определения структуры:

use mio::tcp::TcpStream;

struct Connection {
    socket: TcpStream
}

Позже есть функция, определенная для Connection:

fn writable(&mut self, event_loop: &mut EventLoop<Server>) -> Result<()> {
    loop {
        let (len, res) = {
            let buf = &self.buffer.bytes();
            let len = buf.len();
            let res = self.socket.write_slice(buf);
            (len, res)
        };

Ошибка на write_slice появляется с:

error: type `std::net::tcp::TcpStream` does not implement any method in scope named `write_slice`

Сейчас std::net::tcp::TcpStream не реализует это, но mio::tcp::TcpStream делает. Почему один заменит другого?

Установив это как псевдоним, use mil::tcp::TcpStream as MioTcpStream это тоже не влияет.

1 ответ

Решение

Оказывается, это проблема с опубликованной версией mio пакет.

Добавление следующего к Cargo.toml сносит и использует последнюю рабочую версию:

[dependencies.mio]
git = "https://github.com/carllerche/mio.git"
Другие вопросы по тегам