# Trait rustix::fd::AsRawFd

1.0.0 · source · [−]

    pub trait AsRawFd {
        fn as_raw_fd(&self) -> i32;
    }

Expand description

A trait to extract the raw file descriptor from an underlying object.

This is only available on unix and WASI platforms and must be imported in order to call the method. Windows platforms have a corresponding `AsRawHandle` and `AsRawSocket` set of traits.

## Required Methods

source

#### fn as_raw_fd(&self) -> i32

Extracts the raw file descriptor.

This function is typically used to borrow an owned file descriptor. When used in this way, this method does not pass ownership of the raw file descriptor to the caller, and the file descriptor is only guaranteed to be valid while the original object has not yet been destroyed.

However, borrowing is not strictly required. See [`AsFd::as_fd`] for an API which strictly borrows a file descriptor.

##### Example

    use std::fs::File;
    #[cfg(unix)]
    use std::os::unix::io::{AsRawFd, RawFd};
    #[cfg(target_os = "wasi")]
    use std::os::wasi::io::{AsRawFd, RawFd};

    let mut f = File::open("foo.txt")?;
    // Note that `raw_fd` is only valid as long as `f` exists.
    #[cfg(any(unix, target_os = "wasi"))]
    let raw_fd: RawFd = f.as_raw_fd();

## Implementors

1.48.0 · source

### impl AsRawFd for i32

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

source

### impl AsRawFd for PidFd

1.10.0 · source

### impl AsRawFd for UnixDatagram

1.10.0 · source

### impl AsRawFd for UnixListener

1.10.0 · source

### impl AsRawFd for UnixStream

1.2.0 · source

### impl AsRawFd for ChildStderr

1.2.0 · source

### impl AsRawFd for ChildStdin

1.2.0 · source

### impl AsRawFd for ChildStdout

1.63.0 · source

### impl AsRawFd for BorrowedFd<'_>

1.63.0 · source

### impl AsRawFd for OwnedFd

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>

source

### impl<'context, T: AsFd + Into<OwnedFd> + From<OwnedFd>> AsRawFd for Epoll<Owning<'context, T>>

1.63.0 · source

### impl<T> AsRawFd for Box<T, Global> where
T: AsRawFd,

1.63.0 · source

### impl<T> AsRawFd for Arc<T> where
T: AsRawFd,

This impl allows implementing traits that require `AsRawFd` on Arc.

    use std::net::UdpSocket;
    use std::sync::Arc;
    trait MyTrait: AsRawFd {
    }
    impl MyTrait for Arc<UdpSocket> {}
    impl MyTrait for Box<UdpSocket> {}