Структура Read Half
pub struct ReadHalf<'a>(/* private fields */);
net.Заимствованная читающая половина UnixStream, созданная с помощью split.
Для чтения из ReadHalf обычно используют удобные методы, предоставляемые трейтом AsyncReadExt.
Реализации
impl ReadHalf<'_>
pub async fn ready(&self, interest: Interest) -> Result<Ready>
Ожидает наступления любого из запрошенных состояний готовности.
Эта функция обычно используется вместе с try_read(). Её можно использовать вместо readable(), чтобы проверить возвращённый набор состояний готовности на наличие событий Ready::READABLE и Ready::READ_CLOSED.
Функция может завершиться, даже если сокет не готов. Это ложное срабатывание, и попытка выполнить операцию вернёт io::ErrorKind::WouldBlock. Функция также может вернуть пустой набор Ready, поэтому всегда проверяйте возвращённое значение и при необходимости ожидайте повторно, если запрошенные состояния не установлены.
Эта функция эквивалентна UnixStream::ready.
Безопасность при отмене
Этот метод безопасен при отмене. После возникновения события готовности метод будет сразу возвращаться, пока событие готовности не будет потреблено попыткой чтения или записи, завершившейся с WouldBlock или Poll::Pending.
pub async fn readable(&self) -> Result<()>
Ожидает, пока сокет не станет доступен для чтения.
Эта функция эквивалентна ready(Interest::READABLE) и обычно используется вместе с try_read().
Безопасность при отмене
Этот метод безопасен при отмене. После возникновения события готовности метод будет сразу возвращаться, пока событие готовности не будет потреблено попыткой чтения, завершившейся с WouldBlock или Poll::Pending.
pub fn try_read(&self, buf: &mut [u8]) -> Result<usize>
Пытается прочитать данные из потока в предоставленный буфер и возвращает количество прочитанных байтов.
Получает все ожидающие данные из сокета, но не ждёт поступления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read() не блокируется, буфер не нужно хранить в асинхронной задаче — он может целиком находиться в стеке.
Обычно эта функция используется вместе с readable() или ready().
Возвращаемое значение
Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Если n равно 0, это может означать один из двух сценариев:
- Половина потока для чтения закрыта и больше не будет выдавать данные.
- Длина указанного буфера равна 0 байтам.
Если поток не готов к чтению данных, возвращается Err(io::ErrorKind::WouldBlock).
pub fn try_read_buf<B: BufMut>(&self, buf: &mut B) -> Result<usize>
io-util.Пытается прочитать данные из потока в предоставленный буфер, продвигая его внутренний курсор, и возвращает количество прочитанных байтов.
Получает все ожидающие данные из сокета, но не ждёт поступления новых данных. В случае успеха возвращает количество прочитанных байтов. Поскольку try_read_buf() не блокируется, буфер не нужно хранить в асинхронной задаче — он может целиком находиться в стеке.
Обычно эта функция используется вместе с readable() или ready().
Возвращаемое значение
Если данные успешно прочитаны, возвращается Ok(n), где n — количество прочитанных байтов. Ok(0) означает, что половина потока для чтения закрыта и больше не будет выдавать данные. Если поток не готов к чтению данных
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).
pub fn peer_addr(&self) -> Result<SocketAddr>
Возвращает адрес сокета удалённой стороны этого соединения.
pub fn local_addr(&self) -> Result<SocketAddr>
Возвращает адрес сокета локальной стороны этого соединения.
Реализации трейтов
impl AsRef<UnixStream> for ReadHalf<'_>
fn as_ref(&self) -> &UnixStream
Автоматические реализации трейтов
impl<'a> Freeze for ReadHalf<'a>
impl<'a> RefUnwindSafe for ReadHalf<'a>
impl<'a> Send for ReadHalf<'a>
impl<'a> Sync for ReadHalf<'a>
impl<'a> Unpin for ReadHalf<'a>
impl<'a> UnsafeUnpin for ReadHalf<'a>
impl<'a> UnwindSafe for ReadHalf<'a>
Общие реализации
impl<R> AsyncReadExt for R
fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Read<'a, Self>where Self: Unpin,
io-util.fn read_buf<'a, B>(&'a mut self, buf: &'a mut B) -> ReadBuf<'a, Self, B>
io-util.fn read_exact<'a>(&'a mut self, buf: &'a mut [u8]) -> ReadExact<'a, Self>where Self: Unpin,
io-util.buf. Подробнее
fn read_u8(&mut self) -> ReadU8<&mut Self>where Self: Unpin,
io-util.fn read_i8(&mut self) -> ReadI8<&mut Self>where Self: Unpin,
io-util.fn read_u32(&mut self) -> ReadU32<&mut Self>where Self: Unpin,
io-util.fn read_i32(&mut self) -> ReadI32<&mut Self>where Self: Unpin,
io-util.fn read_u64(&mut self) -> ReadU64<&mut Self>where Self: Unpin,
io-util.fn read_i64(&mut self) -> ReadI64<&mut Self>where Self: Unpin,
io-util.fn read_u128(&mut self) -> ReadU128<&mut Self>where Self: Unpin,
io-util.fn read_i128(&mut self) -> ReadI128<&mut Self>where Self: Unpin,
io-util.fn read_f32(&mut self) -> ReadF32<&mut Self>where Self: Unpin,
io-util.fn read_f64(&mut self) -> ReadF64<&mut Self>where Self: Unpin,
io-util.fn read_u16_le(&mut self) -> ReadU16Le<&mut Self>where Self: Unpin,
io-util.fn read_i16_le(&mut self) -> ReadI16Le<&mut Self>where Self: Unpin,
io-util.fn read_u32_le(&mut self) -> ReadU32Le<&mut Self>where Self: Unpin,
io-util.fn read_i32_le(&mut self) -> ReadI32Le<&mut Self>where Self: Unpin,
io-util.fn read_u64_le(&mut self) -> ReadU64Le<&mut Self>where Self: Unpin,
io-util.fn read_i64_le(&mut self) -> ReadI64Le<&mut Self>where Self: Unpin,
io-util.fn read_u128_le(&mut self) -> ReadU128Le<&mut Self>where Self: Unpin,
io-util.fn read_i128_le(&mut self) -> ReadI128Le<&mut Self>where Self: Unpin,
io-util.fn read_f32_le(&mut self) -> ReadF32Le<&mut Self>where Self: Unpin,
io-util.fn read_f64_le(&mut self) -> ReadF64Le<&mut Self>where Self: Unpin,
io-util.fn read_to_end<'a>(&'a mut self, buf: &'a mut Vec<u8>) -> ReadToEnd<'a, Self>where Self: Unpin,
io-util.buf. Подробнее
fn read_to_string<'a>( &'a mut self, dst: &'a mut String, ) -> ReadToString<'a, Self>where Self: Unpin,
io-util.buf. Подробнее
impl<T> BorrowMut<T> for Twhere T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> Instrument for T
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
impl<T> WithSubscriber for T
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Subscriber к этому типу, возвращая обёртку WithDispatch. Подробнее
MIT License
Copyright © Tokio Contributors
https://docs.rs/tokio/1.53.1/tokio/net/unix/struct.ReadHalf.html