usesuper::read_until::read_until_internal; use futures_core::future::Future; use futures_core::ready; use futures_core::task::{Context, Poll}; use futures_io::AsyncBufRead; use std::io; use std::mem; use std::pin::Pin; use std::str; use std::string::String; use std::vec::Vec;
/// Future for the [`read_line`](super::AsyncBufReadExt::read_line) method. #[derive(Debug)] #[must_use = "futures do nothing unless you `.await` or poll them"] pubstruct ReadLine<'a, R: ?Sized> {
reader: &'a mut R,
buf: &'a mut String,
bytes: Vec<u8>,
read: usize,
finished: bool,
}
impl<R: ?Sized + Unpin> Unpin for ReadLine<'_, R> {}
pub(super) fn read_line_internal<R: AsyncBufRead + ?Sized>(
reader: Pin<&mut R>,
cx: &mut Context<'_>,
buf: &mut String,
bytes: &mut Vec<u8>,
read: &mut usize,
) -> Poll<io::Result<usize>> { letmut ret = ready!(read_until_internal(reader, cx, b'\n', bytes, read)); if str::from_utf8(&bytes[bytes.len() - *read..bytes.len()]).is_err() {
bytes.truncate(bytes.len() - *read); if ret.is_ok() {
ret = Err(io::Error::new(
io::ErrorKind::InvalidData, "stream did not contain valid UTF-8",
));
}
}
*read = 0; // Safety: `bytes` is valid UTF-8 because it was taken from a String // and the newly read bytes are either valid UTF-8 or have been removed.
mem::swap(unsafe { buf.as_mut_vec() }, bytes);
Poll::Ready(ret)
}
impl<R: AsyncBufRead + ?Sized + Unpin> Future for ReadLine<'_, R> { type Output = io::Result<usize>;
impl<R: ?Sized> Drop for ReadLine<'_, R> { fn drop(&mutself) { // restore old string contents if !self.finished { self.bytes.truncate(self.bytes.len() - self.read); // Safety: `bytes` is valid UTF-8 because it was taken from a String // and the newly read bytes have been removed.
mem::swap(unsafe { self.buf.as_mut_vec() }, &mutself.bytes);
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.