Структура Write Half
pub struct WriteHalf<'a>(/* private fields */);
net.Заимствованная половина для записи TcpStream, создаваемая методом split.
Обратите внимание, что в реализации AsyncWrite для этого типа вызов poll_shutdown завершит работу TCP-потока в направлении записи.
Запись в WriteHalf обычно выполняется с помощью удобных методов, предоставляемых трейтом AsyncWriteExt.
Реализации
impl WriteHalf<'_>
pub async fn ready(&self, interest: Interest) -> Result<Ready>
Ожидает наступления любого из запрошенных состояний готовности.
Эту функцию обычно используют в паре с try_write(). Её можно использовать вместо writable(), чтобы проверить возвращённый набор состояний готовности на наличие событий Ready::WRITABLE и Ready::WRITE_CLOSED.
Функция может завершиться, даже если сокет не готов. Это ложноположительный результат, и попытка выполнить операцию вернёт io::ErrorKind::WouldBlock. Функция также может вернуть пустой набор Ready, поэтому всегда следует проверять возвращённое значение и, возможно, снова ожидать, если запрошенные состояния не установлены.
Эта функция эквивалентна TcpStream::ready.
Безопасность отмены
Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать управление, пока это событие не будет обработано попыткой чтения или записи, завершившейся с ошибкой WouldBlock или Poll::Pending.
pub async fn writable(&self) -> Result<()>
Ожидает, пока сокет не станет готов к записи.
Эта функция эквивалентна ready(Interest::WRITABLE) и обычно используется в паре с try_write().
Безопасность отмены
Этот метод безопасен при отмене. После наступления события готовности метод будет немедленно возвращать управление, пока это событие не будет обработано попыткой записи, завершившейся с ошибкой WouldBlock или Poll::Pending.
pub fn try_write(&self, buf: &[u8]) -> Result<usize>
Пытается записать буфер в поток и возвращает количество записанных байтов.
Функция попытается записать всё содержимое buf, но может быть записана только часть буфера.
Эту функцию обычно используют в паре с writable().
Возвращаемое значение
При успешной записи данных возвращается Ok(n), где n — количество записанных байтов. Если поток не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).
pub fn try_write_vectored(&self, bufs: &[IoSlice<'_>]) -> Result<usize>
Пытается записать в поток несколько буферов и возвращает количество записанных байтов.
Данные записываются из каждого буфера по порядку; последний считываемый буфер может быть использован лишь частично. Этот метод эквивалентен одному вызову try_write() с объединёнными буферами.
Эту функцию обычно используют в паре с writable().
Возвращаемое значение
При успешной записи данных возвращается Ok(n), где n — количество записанных байтов. Если поток не готов к записи данных, возвращается Err(io::ErrorKind::WouldBlock).
pub fn peer_addr(&self) -> Result<SocketAddr>
Возвращает удалённый адрес, к которому подключён этот поток.
pub fn local_addr(&self) -> Result<SocketAddr>
Возвращает локальный адрес, к которому привязан этот поток.
Реализации трейтов
impl AsyncWrite for WriteHalf<'_>
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 is_write_vectored(&self) -> bool
poll_write_vectored. Подробнее
Автоматические реализации трейтов
impl<'a> Freeze for WriteHalf<'a>
impl<'a> RefUnwindSafe for WriteHalf<'a>
impl<'a> Send for WriteHalf<'a>
impl<'a> Sync for WriteHalf<'a>
impl<'a> Unpin for WriteHalf<'a>
impl<'a> UnsafeUnpin for WriteHalf<'a>
impl<'a> UnwindSafe for WriteHalf<'a>
Общие реализации
impl<W> AsyncWriteExt for Wwhere 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.fn write_buf<'a, B>(&'a mut self, src: &'a mut B) -> WriteBuf<'a, Self, B>
io-util.fn write_all_buf<'a, B>( &'a mut self, src: &'a mut B, ) -> WriteAllBuf<'a, Self, B>
io-util.fn write_all<'a>(&'a mut self, src: &'a [u8]) -> WriteAll<'a, Self>where Self: Unpin,
io-util.fn write_u16(&mut self, n: u16) -> WriteU16<&mut Self>where Self: Unpin,
io-util.fn write_i16(&mut self, n: i16) -> WriteI16<&mut Self>where Self: Unpin,
io-util.fn write_u32(&mut self, n: u32) -> WriteU32<&mut Self>where Self: Unpin,
io-util.fn write_i32(&mut self, n: i32) -> WriteI32<&mut Self>where Self: Unpin,
io-util.fn write_u64(&mut self, n: u64) -> WriteU64<&mut Self>where Self: Unpin,
io-util.fn write_i64(&mut self, n: i64) -> WriteI64<&mut Self>where Self: Unpin,
io-util.fn write_u128(&mut self, n: u128) -> WriteU128<&mut Self>where Self: Unpin,
io-util.fn write_i128(&mut self, n: i128) -> WriteI128<&mut Self>where Self: Unpin,
io-util.fn write_f32(&mut self, n: f32) -> WriteF32<&mut Self>where Self: Unpin,
io-util.fn write_f64(&mut self, n: f64) -> WriteF64<&mut Self>where Self: Unpin,
io-util.fn write_u16_le(&mut self, n: u16) -> WriteU16Le<&mut Self>where Self: Unpin,
io-util.fn write_i16_le(&mut self, n: i16) -> WriteI16Le<&mut Self>where Self: Unpin,
io-util.fn write_u32_le(&mut self, n: u32) -> WriteU32Le<&mut Self>where Self: Unpin,
io-util.fn write_i32_le(&mut self, n: i32) -> WriteI32Le<&mut Self>where Self: Unpin,
io-util.fn write_u64_le(&mut self, n: u64) -> WriteU64Le<&mut Self>where Self: Unpin,
io-util.fn write_i64_le(&mut self, n: i64) -> WriteI64Le<&mut Self>where Self: Unpin,
io-util.fn write_u128_le(&mut self, n: u128) -> WriteU128Le<&mut Self>where Self: Unpin,
io-util.fn write_i128_le(&mut self, n: i128) -> WriteI128Le<&mut Self>where Self: Unpin,
io-util.fn write_f32_le(&mut self, n: f32) -> WriteF32Le<&mut Self>where Self: Unpin,
io-util.fn write_f64_le(&mut self, n: f64) -> WriteF64Le<&mut Self>where Self: Unpin,
io-util.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/tcp/struct.WriteHalf.html