Spec-Zone.ru › Tokio

Структура NamedPipeClient

pub struct NamedPipeClient { /* private fields */ }
Доступно только в Windows и при включённой функции crate net.

Клиент для именованного канала Windows.

Создаётся с помощью ClientOptions::open.

Для правильного подключения клиента необходимо выполнить несколько шагов. При подключении через ClientOptions::open может возникнуть ошибка, указывающая на одну из двух ситуаций:

  • std::io::ErrorKind::NotFound — сервер недоступен.
  • ERROR_PIPE_BUSY — сервер доступен, но занят. Подождите немного и попробуйте снова.

Таким образом, правильно реализованный клиент выглядит так:

use std::time::Duration;
use tokio::net::windows::named_pipe::ClientOptions;
use tokio::time;
use windows_sys::Win32::Foundation::ERROR_PIPE_BUSY;

const PIPE_NAME: &str = r"\\.\pipe\named-pipe-idiomatic-client";

let client = loop {
    match ClientOptions::new().open(PIPE_NAME) {
        Ok(client) => break client,
        Err(e) if e.raw_os_error() == Some(ERROR_PIPE_BUSY as i32) => (),
        Err(e) => return Err(e),
    }

    time::sleep(Duration::from_millis(50)).await;
};

/* use the connected client */

Реализации

impl NamedPipeClient

pub unsafe fn from_raw_handle(handle: RawHandle) -> Result<Self>

Создаёт новый клиент именованного канала из указанного необработанного дескриптора.

Эта функция передаёт владение указанным дескриптором и возлагает ответственность за его закрытие на возвращаемый объект.

Эта функция также является небезопасной, поскольку возвращаемые в настоящее время примитивы имеют контракт, согласно которому они являются единственными владельцами оборачиваемого ими файлового дескриптора. Использование этой функции может случайно привести к нарушению данного контракта, что может вызвать небезопасное поведение в коде, полагающемся на его соблюдение.

Ошибки

Функция завершится ошибкой, если вызвать её вне среды выполнения Tokio, в среде выполнения, где не включён ввод-вывод, или если произойдёт какая-либо ошибка ввода-вывода, специфичная для ОС.

pub fn info(&self) -> Result<PipeInfo>

Получает сведения об именованном канале, с которым связан клиент.

use tokio::net::windows::named_pipe::{ClientOptions, PipeEnd, PipeMode};

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-info";

let client = ClientOptions::new()
    .open(PIPE_NAME)?;

let client_info = client.info()?;

assert_eq!(client_info.end, PipeEnd::Client);
assert_eq!(client_info.mode, PipeMode::Message);
assert_eq!(client_info.max_instances, 5);

pub async fn ready(&self, interest: Interest) -> Result<Ready>

Ожидает наступления любого из запрошенных состояний готовности.

Эта функция обычно используется вместе с try_read() или try_write(). Она позволяет выполнять чтение и запись в один канал одновременно в рамках одной задачи, не разделяя канал.

Функция может завершиться, даже если канал не готов. Это ложное срабатывание, и попытка выполнить операцию вернёт io::ErrorKind::WouldBlock. Функция также может вернуть пустой набор Ready, поэтому всегда проверяйте возвращаемое значение и, возможно, ожидайте снова, если запрошенные состояния не установлены.

Примеры

Одновременное чтение из канала и запись в него в рамках одной задачи без разделения.

use tokio::io::Interest;
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-ready";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        let ready = client.ready(Interest::READABLE | Interest::WRITABLE).await?;

        if ready.is_readable() {
            let mut data = vec![0; 1024];
            // Try to read data, this may still fail with `WouldBlock`
            // if the readiness event is a false positive.
            match client.try_read(&mut data) {
                Ok(n) => {
                    println!("read {} bytes", n);
                }
                Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                    continue;
                }
                Err(e) => {
                    return Err(e.into());
                }
            }
        }

        if ready.is_writable() {
            // Try to write data, this may still fail with `WouldBlock`
            // if the readiness event is a false positive.
            match client.try_write(b"hello world") {
                Ok(n) => {
                    println!("write {} bytes", n);
                }
                Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                    continue;
                }
                Err(e) => {
                    return Err(e.into());
                }
            }
        }
    }
}

pub async fn readable(&self) -> Result<()>

Ожидает, пока канал не станет доступен для чтения.

Эта функция эквивалентна ready(Interest::READABLE) и обычно используется вместе с try_read().

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-readable";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    let mut msg = vec![0; 1024];

    loop {
        // Wait for the pipe to be readable
        client.readable().await?;

        // Try to read data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_read(&mut msg) {
            Ok(n) => {
                msg.truncate(n);
                break;
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    println!("GOT = {:?}", msg);
    Ok(())
}

pub fn poll_read_ready(&self, cx: &mut Context<'_>) -> Poll<Result<()>>

Проверяет готовность к чтению.

Если канал в данный момент не готов к чтению, этот метод сохранит копию Waker из предоставленного Context. Когда канал станет готов к чтению, для waker будет вызван Waker::wake.

Обратите внимание: при нескольких вызовах poll_read_ready или poll_read пробуждение получит только Waker из Context, переданного при последнем вызове. (Однако poll_write_ready сохраняет второй, независимый waker.)

Эта функция предназначена для случаев, когда невозможно создать и закрепить future с помощью readable. Если возможно, предпочтительно использовать readable, поскольку это позволяет выполнять опрос одновременно из нескольких задач.

Возвращаемое значение

Функция возвращает:

  • Poll::Pending, если канал не готов к чтению.
  • Poll::Ready(Ok(())), если канал готов к чтению.
  • Poll::Ready(Err(e)), если произошла ошибка.
Ошибки

Эта функция может столкнуться с любой стандартной ошибкой ввода-вывода, кроме WouldBlock.

pub fn try_read(&self, buf: &mut [u8]) -> Result<usize>

Пытается прочитать данные из канала в предоставленный буфер и возвращает количество прочитанных байтов.

Получает все ожидающие данные из канала, но не ждёт появления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче, и он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Если n равно 0, это может указывать на один из двух сценариев:

  1. Читающая половина канала закрыта и больше не будет выдавать данные.
  2. Длина указанного буфера равна 0 байтам.

Если канал не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-try-read";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        // Wait for the pipe to be readable
        client.readable().await?;

        // Creating the buffer **after** the `await` prevents it from
        // being stored in the async task.
        let mut buf = [0; 4096];

        // Try to read data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_read(&mut buf) {
            Ok(0) => break,
            Ok(n) => {
                println!("read {} bytes", n);
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub fn try_read_vectored(&self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>

Пытается прочитать данные из канала в предоставленные буферы и возвращает количество прочитанных байтов.

Данные копируются в каждый буфер по порядку; последний буфер, в который выполняется запись, может быть заполнен лишь частично. Этот метод эквивалентен одному вызову try_read() с объединёнными буферами.

Получает все ожидающие данные из канала, но не ждёт появления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read_vectored() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче, и он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Ok(0) указывает, что читающая половина канала закрыта и больше не будет выдавать данные. Если канал не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io::{self, IoSliceMut};

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-try-read-vectored";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        // Wait for the pipe to be readable
        client.readable().await?;

        // Creating the buffer **after** the `await` prevents it from
        // being stored in the async task.
        let mut buf_a = [0; 512];
        let mut buf_b = [0; 1024];
        let mut bufs = [
            IoSliceMut::new(&mut buf_a),
            IoSliceMut::new(&mut buf_b),
        ];

        // Try to read data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_read_vectored(&mut bufs) {
            Ok(0) => break,
            Ok(n) => {
                println!("read {} bytes", n);
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub fn try_read_buf<B: BufMut>(&self, buf: &mut B) -> Result<usize>

Доступно только при включённой функции crate io-util.

Пытается прочитать данные из потока в предоставленный буфер, продвигая его внутренний курсор, и возвращает количество прочитанных байтов.

Получает все ожидающие данные из канала, но не ждёт появления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read_buf() работает в неблокирующем режиме, буфер не нужно хранить в асинхронной задаче, и он может полностью находиться в стеке.

Обычно вместе с этой функцией используется readable() или ready().

Возвращаемое значение

Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Ok(0) указывает, что читающая половина потока закрыта и больше не будет выдавать данные. Если поток не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-readable";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        // Wait for the pipe to be readable
        client.readable().await?;

        let mut buf = Vec::with_capacity(4096);

        // Try to read data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_read_buf(&mut buf) {
            Ok(0) => break,
            Ok(n) => {
                println!("read {} bytes", n);
            }
            Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub async fn writable(&self) -> Result<()>

Ожидает, пока канал не будет готов к записи.

Эта функция эквивалентна ready(Interest::WRITABLE) и обычно используется вместе с try_write().

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-writable";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        // Wait for the pipe to be writable
        client.writable().await?;

        // Try to write data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_write(b"hello world") {
            Ok(n) => {
                break;
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub fn poll_write_ready(&self, cx: &mut Context<'_>) -> Poll<Result<()>>

Проверяет готовность к записи.

Если канал в данный момент не готов к записи, этот метод сохранит копию Waker из предоставленного Context. Когда канал будет готов к записи, для waker будет вызван Waker::wake.

Обратите внимание, что при нескольких вызовах poll_write_ready или poll_write пробуждение запланировано только для Waker из Context, переданного при последнем вызове. (Однако poll_read_ready сохраняет второй, независимый waker.)

Эта функция предназначена для случаев, когда создание и закрепление future с помощью writable невозможно. По возможности предпочтительно использовать writable, поскольку это позволяет выполнять опрос одновременно из нескольких задач.

Возвращаемое значение

Функция возвращает:

  • Poll::Pending, если канал не готов к записи.
  • Poll::Ready(Ok(())), если канал готов к записи.
  • Poll::Ready(Err(e)), если произошла ошибка.
Ошибки

Эта функция может столкнуться с любой стандартной ошибкой ввода-вывода, кроме WouldBlock.

pub fn try_write(&self, buf: &[u8]) -> Result<usize>

Пытается записать буфер в канал и возвращает количество записанных байтов.

Функция попытается записать всё содержимое buf, однако может быть записана только часть буфера.

Эта функция обычно используется вместе с writable().

Возвращаемое значение

Если данные успешно записаны, возвращается Ok(n), где n — количество записанных байтов. Если канал не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-try-write";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    loop {
        // Wait for the pipe to be writable
        client.writable().await?;

        // Try to write data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_write(b"hello world") {
            Ok(n) => {
                break;
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub fn try_write_vectored(&self, buf: &[IoSlice<'_>]) -> Result<usize>

Пытается записать несколько буферов в канал и возвращает количество записанных байтов.

Данные записываются из каждого буфера по порядку; последний из считываемых буферов может быть использован не полностью. Этот метод эквивалентен одному вызову try_write() с объединёнными буферами.

Эта функция обычно используется вместе с writable().

Возвращаемое значение

Если данные успешно записаны, возвращается Ok(n), где n — количество записанных байтов. Если канал не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).

Примеры
use tokio::net::windows::named_pipe;
use std::error::Error;
use std::io;

const PIPE_NAME: &str = r"\\.\pipe\tokio-named-pipe-client-try-write-vectored";

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    let client = named_pipe::ClientOptions::new().open(PIPE_NAME)?;

    let bufs = [io::IoSlice::new(b"hello "), io::IoSlice::new(b"world")];

    loop {
        // Wait for the pipe to be writable
        client.writable().await?;

        // Try to write data, this may still fail with `WouldBlock`
        // if the readiness event is a false positive.
        match client.try_write_vectored(&bufs) {
            Ok(n) => {
                break;
            }
            Err(e) if e.kind() == io::ErrorKind::WouldBlock => {
                continue;
            }
            Err(e) => {
                return Err(e.into());
            }
        }
    }

    Ok(())
}

pub fn try_io<R>( &self, interest: Interest, f: impl FnOnce() -> Result<R>, ) -> Result<R>

Пытается выполнить чтение из канала или запись в него с помощью предоставленной пользователем операции ввода-вывода.

Если канал готов, вызывается предоставленная замыкающая функция. Она должна попытаться выполнить операцию ввода-вывода с каналом, вручную вызвав соответствующий системный вызов. Если операция завершается ошибкой, поскольку канал на самом деле не готов, замыкающая функция должна вернуть ошибку WouldBlock, и флаг готовности будет сброшен. Затем try_io вернёт значение, возвращённое замыкающей функцией.

Если канал не готов, замыкающая функция не вызывается, а возвращается ошибка WouldBlock.

Замыкающая функция должна возвращать ошибку WouldBlock только в том случае, если она выполнила операцию ввода-вывода с каналом, завершившуюся ошибкой из-за неготовности канала. Возврат ошибки WouldBlock в любой другой ситуации приведёт к некорректному сбросу флага готовности, из-за чего канал может работать неправильно.

Замыкающая функция не должна выполнять операцию ввода-вывода с помощью методов, определённых для типа Tokio NamedPipeClient, поскольку это нарушит работу флага готовности и может привести к неправильной работе канала.

Этот метод не предназначен для использования с объединёнными интересами. Замыкающая функция должна выполнять только один тип операции ввода-вывода, поэтому ей не должно требоваться более одного состояния готовности. При вызове с объединённым интересом этот метод может вызвать панику или бесконечно ожидать.

Обычно с этой функцией используют readable(), writable() или ready().

pub async fn async_io<R>( &self, interest: Interest, f: impl FnMut() -> Result<R>, ) -> Result<R>

Выполняет чтение из канала или запись в него с помощью предоставленной пользователем операции ввода-вывода.

Ожидается готовность канала, и, когда канал готов, вызывается предоставленная замыкающая функция. Она должна попытаться выполнить операцию ввода-вывода с каналом, вручную вызвав соответствующий системный вызов. Если операция завершается ошибкой, поскольку канал на самом деле не готов, замыкающая функция должна вернуть ошибку WouldBlock. В этом случае флаг готовности сбрасывается, после чего снова ожидается готовность канала. Этот цикл повторяется, пока замыкающая функция не вернёт Ok либо ошибку, отличную от WouldBlock.

Замыкающая функция должна возвращать ошибку WouldBlock только в том случае, если она выполнила операцию ввода-вывода с каналом, завершившуюся ошибкой из-за неготовности канала. Возврат ошибки WouldBlock в любой другой ситуации приведёт к некорректному сбросу флага готовности, из-за чего канал может работать неправильно.

Замыкающая функция не должна выполнять операцию ввода-вывода с помощью методов, определённых для типа Tokio NamedPipeClient, поскольку это нарушит работу флага готовности и может привести к неправильной работе канала.

Этот метод не предназначен для использования с объединёнными интересами. Замыкающая функция должна выполнять только один тип операции ввода-вывода, поэтому ей не должно требоваться более одного состояния готовности. При вызове с объединённым интересом этот метод может вызвать панику или бесконечно ожидать.

Реализации трейтов

impl AsHandle for NamedPipeClient

fn as_handle(&self) -> BorrowedHandle<'_>

Доступно только на docsrs and Unix and (crate features fs or net).
См. std::os::windows::io::AsHandle::as_handle

impl AsRawHandle for NamedPipeClient

fn as_raw_handle(&self) -> RawHandle

Доступно только на docsrs and Unix and (crate features fs or net).
См. std::os::windows::io::AsRawHandle::as_raw_handle

impl AsyncRead for NamedPipeClient

fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut ReadBuf<'_>, ) -> Poll<Result<()>>

Пытается прочитать данные из AsyncRead в buf. Подробнее

impl AsyncWrite for NamedPipeClient

fn poll_write( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8], ) -> Poll<Result<usize>>

Попытка записать байты из buf в объект. Подробнее

fn poll_write_vectored( self: Pin<&mut Self>, cx: &mut Context<'_>, bufs: &[IoSlice<'_>], ) -> Poll<Result<usize>>

Как и poll_write, но записывает данные из среза буферов. Подробнее

fn poll_flush(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<()>>

Попытка сбросить буфер объекта, гарантируя, что все буферизованные данные достигнут места назначения. Подробнее

fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>>

Инициирует или пытается завершить работу этого средства записи; возвращает успех, когда соединение ввода-вывода полностью закрыто. Подробнее

fn is_write_vectored(&self) -> bool

Определяет, имеет ли это средство записи эффективную реализацию poll_write_vectored. Подробнее

impl Debug for NamedPipeClient

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Форматирует значение с помощью указанного форматировщика. Подробнее

Автоматические реализации трейтов

impl Freeze for NamedPipeClient

impl RefUnwindSafe for NamedPipeClient

impl Send for NamedPipeClient

impl Sync for NamedPipeClient

impl Unpin for NamedPipeClient

impl UnsafeUnpin for NamedPipeClient

impl UnwindSafe for NamedPipeClient

Обобщённые реализации

impl<T> Any for T
where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

Получает TypeId для self. Подробнее

impl<R> AsyncReadExt for R
where R: AsyncRead + ?Sized,

fn chain<R>(self, next: R) -> Chain<Self, R>
where Self: Sized, R: AsyncRead,

Доступно только при включённой функции crate io-util.
Создаёт новый экземпляр AsyncRead, объединяющий этот поток с next. Подробнее

fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает несколько байтов из этого источника в указанный буфер и возвращает количество прочитанных байтов. Подробнее

fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
where Self: Unpin, B: BufMut + ?Sized,

Доступно только при включённой функции crate io-util.
Считывает несколько байтов из этого источника в указанный буфер, перемещая внутренний курсор буфера. Подробнее

fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает точное количество байтов, необходимое для заполнения buf. Подробнее

fn read_u8(&mut self) -> ReadU8<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает беззнаковое 8-битное целое число из базового источника чтения. Подробнее

fn read_i8(&mut self) -> ReadI8<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 8-битное целое число из базового источника чтения. Подробнее

fn read_u16(&mut self) -> ReadU16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает беззнаковое 16-битное целое число из базового источника чтения в порядке от старшего байта к младшему. Подробнее

fn read_i16(&mut self) -> ReadI16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 16-битное целое число из базового источника чтения в порядке от старшего байта к младшему. Подробнее

fn read_u32(&mut self) -> ReadU32<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает беззнаковое 32-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i32(&mut self) -> ReadI32<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает знаковое 32-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u64(&mut self) -> ReadU64<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает беззнаковое 64-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i64(&mut self) -> ReadI64<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает знаковое 64-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u128(&mut self) -> ReadU128<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает беззнаковое 128-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_i128(&mut self) -> ReadI128<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает знаковое 128-битное целое число в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_f32(&mut self) -> ReadF32<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает 32-битное число с плавающей точкой в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_f64(&mut self) -> ReadF64<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает 64-битное число с плавающей точкой в порядке от старшего байта к младшему из базового средства чтения. Подробнее

fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает беззнаковое 16-битное целое число в порядке от младшего байта к старшему из базового средства чтения. Подробнее

fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 16-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает беззнаковое 32-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 32-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает беззнаковое 64-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 64-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает беззнаковое 128-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает знаковое 128-битное целое число в порядке little-endian из базового средства чтения. Подробнее

fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает 32-битное число с плавающей точкой в порядке little-endian из базового средства чтения. Подробнее

fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Считывает 64-битное число с плавающей точкой в порядке little-endian из базового средства чтения. Подробнее

fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает все байты из этого источника до EOF, помещая их в buf. Подробнее

fn read_to_string<'a>( &'a mut self, dst: &'a mut String, ) -> ReadToString<'a, Self>
where Self: Unpin,

Доступно только при включённой возможности crate io-util.
Читает все байты из этого источника до EOF, добавляя их в buf. Подробнее

fn take(self, limit: u64) -> Take<Self>
where Self: Sized,

Доступно только при включённой возможности crate io-util.
Создаёт адаптер, который читает из него не более limit байт. Подробнее

impl<W> AsyncWriteExt для W
where W: AsyncWrite + ?Sized,

fn write<'a>(&'a mut self, src: &'a [u8]) -> Write<'a, Self>
where Self: Unpin,

Доступно только при включённом функциональном флаге io-util.
Записывает буфер в этот объект записи и возвращает количество записанных байтов. Подробнее

fn write_vectored<'a, 'b>( &'a mut self, bufs: &'a [IoSlice<'b>], ) -> WriteVectored<'a, 'b, Self>
where Self: Unpin,

Доступно только при включённом функциональном флаге io-util.
Аналогично write, но запись выполняется из среза буферов. Подробнее

fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Доступно только при включённом функциональном флаге io-util.
Записывает буфер в этот объект записи, сдвигая внутренний указатель буфера. Подробнее

fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
where Self: Sized + Unpin, B: Buf,

Доступно только при включённом функциональном флаге io-util.
Пытается записать весь буфер в этот объект записи. Подробнее

fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>
where Self: Unpin,

Доступно только при включённом функциональном флаге io-util.
Пытается записать весь буфер в этот объект записи. Подробнее

fn write_u8(&mut self, n: u8) -> WriteU8<&mut Self>
where Self: Unpin,

Доступно только при включённом функциональном флаге io-util.
Записывает беззнаковое 8-битное целое число в нижележащий объект записи. Подробнее

fn write_i8(&mut self, n: i8) -> WriteI8<&mut Self>
where Self: Unpin,

Доступно только при включённом функциональном флаге io-util.
Записывает знаковое 8-битное целое число в нижележащий объект записи. Подробнее

fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает беззнаковое 16-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает знаковое 16-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает беззнаковое 32-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает знаковое 32-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает беззнаковое 64-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает знаковое 64-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает беззнаковое 128-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>
where Self: Unpin,

Доступно только при включённой функции крейта io-util.
Записывает знаковое 128-битное целое число в порядке от старшего байта к младшему в базовый объект записи. Подробнее

fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает значение типа с плавающей точкой размером 32 бита в прямом порядке байтов в базовый объект записи. Подробнее

fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает значение типа с плавающей точкой размером 64 бита в прямом порядке байтов в базовый объект записи. Подробнее

fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает беззнаковое 16-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает знаковое 16-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает беззнаковое 32-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает знаковое 32-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает беззнаковое 64-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой возможности крейта io-util.
Записывает знаковое 64-битное целое число в обратном порядке байтов в базовый объект записи. Подробнее

fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Записывает беззнаковое 128-битное целое число в формате little-endian в нижележащий поток записи. Подробнее

fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Записывает знаковое 128-битное целое число в формате little-endian в нижележащий поток записи. Подробнее

fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Записывает 32-битное число с плавающей точкой в формате little-endian в нижележащий поток записи. Подробнее

fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Записывает 64-битное число с плавающей точкой в формате little-endian в нижележащий поток записи. Подробнее

fn flush(&mut self) -> Flush<'_, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Сбрасывает этот выходной поток, обеспечивая передачу всего промежуточно буферизованного содержимого в место назначения. Подробнее

fn shutdown(&mut self) -> Shutdown<'_, Self>
where Self: Unpin,

Доступно только при включённой функции crate io-util.
Завершает работу выходного потока, обеспечивая возможность корректно удалить значение. Подробнее

impl<T> Borrow<T> for T
where T: ?Sized,

fn borrow(&self) -> &T

Неизменяемо заимствует данные из владеющего значения. Подробнее

impl<T> BorrowMut<T> for T
where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

Изменяемо заимствует данные из владеющего значения. Подробнее

impl<T> From<T> for T

fn from(t: T) -> T

Возвращает аргумент без изменений.

impl<T> Instrument for T

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью предоставленного Span, возвращая обёртку Instrumented. Подробнее

fn in_current_span(self) -> Instrumented<Self> ⓘ

Инструментирует этот тип с помощью текущего Span, возвращая обёртку Instrumented. Подробнее

impl<T, U> Into<U> for T
where U: From<T>,

fn into(self) -> U

Вызывает U::from(self).

То есть это преобразование выполняется так, как предписывает реализация From<T> for U.

impl<T, U> TryFrom<U> for T
where U: Into<T>,

type Error = Infallible

Тип, возвращаемый в случае ошибки преобразования.

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Выполняет преобразование.

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error

Тип, возвращаемый в случае ошибки преобразования.

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Выполняет преобразование.

impl<T> WithSubscriber for T

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Присоединяет указанный Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Присоединяет текущий по умолчанию Subscriber к этому типу и возвращает обёртку WithDispatch. Подробнее

MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/windows/named_pipe/struct.NamedPipeClient.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API