Trait std::os::fd::AsRawFd

1.0.0 · source ·
pub trait AsRawFd {
    // Required method
    fn as_raw_fd(&self) -> RawFd;
}
Expand description

一个从底层对象中提取原始文件描述符的 trait。

这仅在 unix 和 WASI 平台上可用,必须导入才能调用该方法。 Windows 平台有相应的 AsRawHandleAsRawSocket 的 traits 集合。

Required Methods§

source

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();
Run

Implementors§

source§

impl AsRawFd for File

1.21.0 · source§

impl AsRawFd for Stderr

1.21.0 · source§

impl AsRawFd for Stdin

1.21.0 · source§

impl AsRawFd for Stdout

source§

impl AsRawFd for TcpListener

source§

impl AsRawFd for TcpStream

source§

impl AsRawFd for UdpSocket

1.2.0 · source§

impl AsRawFd for ChildStderr

Available on Unix only.
1.2.0 · source§

impl AsRawFd for ChildStdin

Available on Unix only.
1.2.0 · source§

impl AsRawFd for ChildStdout

Available on Unix only.
source§

impl AsRawFd for PidFd

Available on Linux only.
1.10.0 · source§

impl AsRawFd for UnixDatagram

Available on Unix only.
1.10.0 · source§

impl AsRawFd for UnixListener

Available on Unix only.
1.10.0 · source§

impl AsRawFd for UnixStream

Available on Unix only.
1.63.0 · source§

impl AsRawFd for BorrowedFd<'_>

1.63.0 · source§

impl AsRawFd for OwnedFd

1.48.0 · source§

impl AsRawFd for RawFd

1.35.0 · source§

impl<'a> AsRawFd for StderrLock<'a>

1.35.0 · source§

impl<'a> AsRawFd for StdinLock<'a>

1.35.0 · source§

impl<'a> AsRawFd for StdoutLock<'a>

1.63.0 · source§

impl<T: AsRawFd> AsRawFd for Box<T>

1.69.0 · source§

impl<T: AsRawFd> AsRawFd for Rc<T>

1.63.0 · source§

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