pub struct StdinLock<'a> { /* private fields */ }
Expand description
Stdin
句柄的锁定引用。
该句柄同时实现 Read
和 BufRead
traits,并通过 Stdin::lock
方法构造。
Note: Windows 可移植性注意事项
在控制台中操作时,此流的 Windows 实现不支持非 UTF-8 字节序列。 尝试读取无效的 UTF-8 字节将返回错误。
在具有分离控制台的进程中,例如使用 #![windows_subsystem = "windows"]
的进程,或在从此类进程派生的子进程中,包含的句柄将为空。
在这种情况下,标准库的 Read
和 Write
将什么都不做,默默地成功。
通过标准库或通过原始 Windows API 调用的所有其他 I/O 操作都将失败。
Examples
use std::io::{self, BufRead};
fn main() -> io::Result<()> {
let mut buffer = String::new();
let stdin = io::stdin(); // 我们在这里得到 `Stdin`。
{
let mut handle = stdin.lock(); // 我们在这里得到 `StdinLock`。
handle.read_line(&mut buffer)?;
} // `StdinLock` 被丢弃在这里。
Ok(())
}
RunTrait Implementations§
1.63.0 · source§impl<'a> AsFd for StdinLock<'a>
impl<'a> AsFd for StdinLock<'a>
source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
借用文件描述符。 Read more
1.63.0 · source§impl<'a> AsHandle for StdinLock<'a>
Available on Windows only.
impl<'a> AsHandle for StdinLock<'a>
Available on Windows only.
source§fn as_handle(&self) -> BorrowedHandle<'_>
fn as_handle(&self) -> BorrowedHandle<'_>
借用句柄。 Read more
1.35.0 · source§impl<'a> AsRawHandle for StdinLock<'a>
Available on Windows only.
impl<'a> AsRawHandle for StdinLock<'a>
Available on Windows only.
source§fn as_raw_handle(&self) -> RawHandle
fn as_raw_handle(&self) -> RawHandle
提取原始句柄。 Read more
source§impl BufRead for StdinLock<'_>
impl BufRead for StdinLock<'_>
source§fn fill_buf(&mut self) -> Result<&[u8]>
fn fill_buf(&mut self) -> Result<&[u8]>
返回内部缓冲区的内容,如果内部缓冲区为空,则使用内部 reader 中的更多数据填充内部缓冲区。 Read more
source§fn has_data_left(&mut self) -> Result<bool>
fn has_data_left(&mut self) -> Result<bool>
🔬This is a nightly-only experimental API. (
buf_read_has_data_left
#86423)检查底层
Read
是否有任何数据可供读取。 Read more1.70.0 · source§impl IsTerminal for StdinLock<'_>
impl IsTerminal for StdinLock<'_>
source§fn is_terminal(&self) -> bool
fn is_terminal(&self) -> bool
如果 descriptor/handle 引用 terminal/tty,则返回
true
。 Read moresource§impl Read for StdinLock<'_>
impl Read for StdinLock<'_>
source§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<()>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<()>
🔬This is a nightly-only experimental API. (
read_buf
#78485)从此源中提取一些字节到指定的缓冲区中。 Read more
source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize>
与
read
相似,不同之处在于它读入缓冲区的一部分。 Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector
#69941)source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>
读取所有字节,直到此源中的 EOF 为止,然后将它们放入
buf
。 Read moresource§fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize>
读取这个源中的所有字节,直到 EOF 为止,然后将它们追加到
buf
。 Read moresource§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<()>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<()>
🔬This is a nightly-only experimental API. (
read_buf
#78485)读取填充
cursor
所需的确切字节数。 Read moresource§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,
为这个
Read
实例创建一个 “by reference” 适配器。 Read more