pub trait AsRawFd {
// Required method
fn as_raw_fd(&self) -> RawFd;
}
Expand description
一个从底层对象中提取原始文件描述符的 trait。
这仅在 unix 和 WASI 平台上可用,必须导入才能调用该方法。
Windows 平台有相应的 AsRawHandle
和 AsRawSocket
的 traits 集合。
Required Methods§
sourcefn as_raw_fd(&self) -> RawFd
fn as_raw_fd(&self) -> RawFd
提取原始文件描述符。
此函数通常用于借用拥有所有权的文件描述符。 以这种方式使用时,该方法不传递原始文件描述符的所有权,并且文件描述符仅在原始 object 尚未被调用者被调用时才保证有效。
但是,借用并不是严格要求的。有关严格借用文件描述符的 API,请参见 AsFd::as_fd
。
Example
use std::fs::File;
#[cfg(any(unix, target_os = "wasi"))]
use std::os::fd::{AsRawFd, RawFd};
let mut f = File::open("foo.txt")?;
// 注意,`raw_fd` 仅在存在 `f` 时才有效。
#[cfg(any(unix, target_os = "wasi"))]
let raw_fd: RawFd = f.as_raw_fd();
RunImplementors§
impl AsRawFd for File
impl AsRawFd for Stderr
impl AsRawFd for Stdin
impl AsRawFd for Stdout
impl AsRawFd for TcpListener
impl AsRawFd for TcpStream
impl AsRawFd for UdpSocket
impl AsRawFd for ChildStderr
Available on Unix only.
impl AsRawFd for ChildStdin
Available on Unix only.
impl AsRawFd for ChildStdout
Available on Unix only.
impl AsRawFd for PidFd
Available on Linux only.
impl AsRawFd for UnixDatagram
Available on Unix only.
impl AsRawFd for UnixListener
Available on Unix only.
impl AsRawFd for UnixStream
Available on Unix only.
impl AsRawFd for BorrowedFd<'_>
impl AsRawFd for OwnedFd
impl AsRawFd for RawFd
impl<'a> AsRawFd for StderrLock<'a>
impl<'a> AsRawFd for StdinLock<'a>
impl<'a> AsRawFd for StdoutLock<'a>
impl<T: AsRawFd> AsRawFd for Box<T>
impl<T: AsRawFd> AsRawFd for Rc<T>
impl<T: AsRawFd> AsRawFd for Arc<T>
这个 impl 允许在 Arc 上实现需要 AsRawFd
的 traits。
use std::net::UdpSocket;
use std::sync::Arc;
trait MyTrait: AsRawFd {
}
impl MyTrait for Arc<UdpSocket> {}
impl MyTrait for Box<UdpSocket> {}
Run