Spec-Zone.ru › Tokio

Структура OpenOptions

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

Параметры и флаги, с помощью которых можно настроить открытие FIFO-файла.

Этот построитель позволяет настроить создание конца канала из FIFO-файла. В общем случае при использовании OpenOptions сначала вызовите new, затем последовательно вызовите методы, чтобы задать каждый параметр, а после этого вызовите либо open_receiver, либо open_sender, передав путь к FIFO-файлу, который требуется открыть. В результате вы получите io::Result с концом канала, с которым можно выполнять дальнейшие операции.

Примеры

Открытие пары концов канала из FIFO-файла:

use tokio::net::unix::pipe;

const FIFO_NAME: &str = "path/to/a/fifo";

let rx = pipe::OpenOptions::new().open_receiver(FIFO_NAME)?;
let tx = pipe::OpenOptions::new().open_sender(FIFO_NAME)?;

Открытие Sender в Linux, если вы уверены, что файл является FIFO:

ⓘ
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};

// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";

mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let tx = pipe::OpenOptions::new()
    .read_write(true)
    .unchecked(true)
    .open_sender(FIFO_NAME)?;

Реализации

impl OpenOptions

pub fn new() -> OpenOptions

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

Изначально для всех параметров установлено значение false.

pub fn read_write(&mut self, value: bool) -> &mut Self

Доступно только на Android или Linux.

Задаёт параметр доступа на чтение и запись.

Если этот параметр имеет значение true, файл FIFO будет открыт в режиме доступа на чтение и запись. Эта операция не определена стандартом POSIX, и её работа гарантируется только в Linux.

Примеры

Открытие Sender, даже если нет открытых концов для чтения:

ⓘ
use tokio::net::unix::pipe;

let tx = pipe::OpenOptions::new()
    .read_write(true)
    .open_sender("path/to/a/fifo");

Открытие устойчивого Receiver, то есть конца канала для чтения, который не завершится ошибкой UnexpectedEof во время чтения, если все концы канала для записи закроют файл FIFO.

ⓘ
use tokio::net::unix::pipe;

let tx = pipe::OpenOptions::new()
    .read_write(true)
    .open_receiver("path/to/a/fifo");

pub fn unchecked(&mut self, value: bool) -> &mut Self

Задаёт параметр, отключающий проверку типа файла FIFO.

По умолчанию функции open_receiver и open_sender проверяют, является ли открываемый файл файлом FIFO. Установите для этого параметра значение true, если вы уверены, что файл является файлом FIFO.

Примеры
use tokio::net::unix::pipe;
use nix::{unistd::mkfifo, sys::stat::Mode};

// Our program has exclusive access to this path.
const FIFO_NAME: &str = "path/to/a/new/fifo";

mkfifo(FIFO_NAME, Mode::S_IRWXU)?;
let rx = pipe::OpenOptions::new()
    .unchecked(true)
    .open_receiver(FIFO_NAME)?;

pub fn open_receiver<P: AsRef<Path>>(&self, path: P) -> Result<Receiver>

Создаёт Receiver из файла FIFO с параметрами, заданными в self.

Эта функция откроет файл FIFO по указанному пути, при необходимости проверит, является ли он каналом, и свяжет канал с циклом обработки событий по умолчанию для чтения.

Ошибки

Если проверка типа файла завершится неудачно, эта функция вернёт ошибку io::ErrorKind::InvalidInput. Также эта функция может завершиться с другими стандартными ошибками ОС.

Паника

Эта функция вызывает панику, если её вызвать вне среды выполнения с включённым вводом-выводом.

Среда выполнения обычно устанавливается неявно, когда эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.

pub fn open_sender<P: AsRef<Path>>(&self, path: P) -> Result<Sender>

Создаёт Sender из файла FIFO с параметрами, заданными в self.

Эта функция откроет файл FIFO по указанному пути, при необходимости проверит, является ли он каналом, и свяжет канал с циклом обработки событий по умолчанию для записи.

Ошибки

Если проверка типа файла завершится неудачно, эта функция вернёт ошибку io::ErrorKind::InvalidInput. Если файл открыт не в режиме доступа на чтение и запись и в данный момент не открыт для чтения, эта функция вернёт ошибку ENXIO. Также эта функция может завершиться с другими стандартными ошибками ОС.

Паника

Эта функция вызывает панику, если её вызвать вне среды выполнения с включённым вводом-выводом.

Среда выполнения обычно устанавливается неявно, когда эта функция вызывается из future, выполняемого средой выполнения tokio. В противном случае среду выполнения можно установить явно с помощью функции Runtime::enter.

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

impl Clone for OpenOptions

fn clone(&self) -> OpenOptions

Возвращает дубликат значения. Подробнее
1.0.0 (const: unstable) ·

fn clone_from(&mut self, source: &Self)

Выполняет копирующее присваивание из source. Подробнее

impl Debug for OpenOptions

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

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

impl Default for OpenOptions

fn default() -> OpenOptions

Возвращает «значение по умолчанию» для типа. Подробнее

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

impl Freeze for OpenOptions

impl RefUnwindSafe for OpenOptions

impl Send for OpenOptions

impl Sync for OpenOptions

impl Unpin for OpenOptions

impl UnsafeUnpin for OpenOptions

impl UnwindSafe for OpenOptions

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

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

fn type_id(&self) -> TypeId

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

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> CloneToUninit for T
where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬Это экспериментальный API, доступный только в nightly. (clone_to_uninit)
Выполняет присваивание копированием из self в dest. Подробнее

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> ToOwned for T
where T: Clone,

type Owned = T

Тип, получаемый после перехода во владение.

fn to_owned(&self) -> T

Создаёт владеющие данные из заимствованных данных, обычно путём клонирования. Подробнее

fn clone_into(&self, target: &mut T)

Использует заимствованные данные для замены владеющих данных, обычно путём клонирования. Подробнее

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/unix/pipe/struct.OpenOptions.html

Spec-Zone.ru

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