# 1.10.0[−][src]Struct std::os::unix::net::UnixDatagram

    pub struct UnixDatagram(_);

This is supported on Unix only.

A Unix datagram socket.

# Examples

    use std::os::unix::net::UnixDatagram;

    let socket = UnixDatagram::bind("/path/to/my/socket").unwrap();
    socket.send_to(b"hello world", "/path/to/other/socket").unwrap();
    let mut buf = [0; 100];
    let (count, address) = socket.recv_from(&mut buf).unwrap();
    println!("socket {:?} sent {:?}", address, &buf[..count]);Run

## Methods

### `impl UnixDatagram`[src]

#### `pub fn bind<P: AsRef<Path>>(path: P) -> Result<UnixDatagram>`[src]

This is supported on Unix only.

Creates a Unix datagram socket bound to the given path.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = match UnixDatagram::bind("/path/to/the/socket") {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't bind: {:?}", e);
            return
        }
    };Run

#### `pub fn unbound() -> Result<UnixDatagram>`[src]

This is supported on Unix only.

Creates a Unix Datagram socket which is not bound to any address.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = match UnixDatagram::unbound() {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't unbound: {:?}", e);
            return
        }
    };Run

#### `pub fn pair() -> Result<(UnixDatagram, UnixDatagram)>`[src]

This is supported on Unix only.

Create an unnamed pair of connected sockets.

Returns two `UnixDatagrams`s which are connected to each other.

# Examples

    use std::os::unix::net::UnixDatagram;

    let (sock1, sock2) = match UnixDatagram::pair() {
        Ok((sock1, sock2)) => (sock1, sock2),
        Err(e) => {
            println!("Couldn't unbound: {:?}", e);
            return
        }
    };Run

#### `pub fn connect<P: AsRef<Path>>(&self, path: P) -> Result<()>`[src]

This is supported on Unix only.

Connects the socket to the specified address.

The `send` method may be used to send data to the specified address. `recv` and `recv_from` will only receive data from that address.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    match sock.connect("/path/to/the/socket") {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't connect: {:?}", e);
            return
        }
    };Run

#### `pub fn try_clone(&self) -> Result<UnixDatagram>`[src]

This is supported on Unix only.

Creates a new independently owned handle to the underlying socket.

The returned `UnixDatagram` is a reference to the same socket that this object references. Both handles can be used to accept incoming connections and options set on one side will affect the other.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();

    let sock_copy = sock.try_clone().expect("try_clone failed");Run

#### `pub fn local_addr(&self) -> Result<SocketAddr>`[src]

This is supported on Unix only.

Returns the address of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();

    let addr = sock.local_addr().expect("Couldn't get local address");Run

#### `pub fn peer_addr(&self) -> Result<SocketAddr>`[src]

This is supported on Unix only.

Returns the address of this socket's peer.

The `connect` method will connect the socket to a peer.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.connect("/path/to/the/socket").unwrap();

    let addr = sock.peer_addr().expect("Couldn't get peer address");Run

#### `pub fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>`[src]

This is supported on Unix only.

Receives data from the socket.

On success, returns the number of bytes read and the address from whence the data came.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    let mut buf = vec![0; 10];
    match sock.recv_from(buf.as_mut_slice()) {
        Ok((size, sender)) => println!("received {} bytes from {:?}", size, sender),
        Err(e) => println!("recv_from function failed: {:?}", e),
    }Run

#### `pub fn recv(&self, buf: &mut [u8]) -> Result<usize>`[src]

This is supported on Unix only.

Receives data from the socket.

On success, returns the number of bytes read.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();
    let mut buf = vec![0; 10];
    sock.recv(buf.as_mut_slice()).expect("recv function failed");Run

#### `pub fn send_to<P: AsRef<Path>>(&self, buf: &[u8], path: P) -> Result<usize>`[src]

This is supported on Unix only.

Sends data on the socket to the specified address.

On success, returns the number of bytes written.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.send_to(b"omelette au fromage", "/some/sock").expect("send_to function failed");Run

#### `pub fn send(&self, buf: &[u8]) -> Result<usize>`[src]

This is supported on Unix only.

Sends data on the socket to the socket's peer.

The peer address may be set by the `connect` method, and this method will return an error if the socket has not already been connected.

On success, returns the number of bytes written.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.connect("/some/sock").expect("Couldn't connect");
    sock.send(b"omelette au fromage").expect("send_to function failed");Run

#### `pub fn set_read_timeout(&self, timeout: Option<Duration>) -> Result<()>`[src]

This is supported on Unix only.

Sets the read timeout for the socket.

If the provided value is `None`, then `recv` and `recv_from` calls will block indefinitely. An `Err` is returned if the zero `Duration` is passed to this method.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_read_timeout(Some(Duration::new(1, 0))).expect("set_read_timeout function failed");Run

An `Err` is returned if the zero `Duration` is passed to this method:

    use std::io;
    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let socket = UnixDatagram::unbound().unwrap();
    let result = socket.set_read_timeout(Some(Duration::new(0, 0)));
    let err = result.unwrap_err();
    assert_eq!(err.kind(), io::ErrorKind::InvalidInput)Run

#### `pub fn set_write_timeout(&self, timeout: Option<Duration>) -> Result<()>`[src]

This is supported on Unix only.

Sets the write timeout for the socket.

If the provided value is `None`, then `send` and `send_to` calls will block indefinitely. An `Err` is returned if the zero `Duration` is passed to this method.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_write_timeout(Some(Duration::new(1, 0)))
        .expect("set_write_timeout function failed");Run

An `Err` is returned if the zero `Duration` is passed to this method:

    use std::io;
    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let socket = UnixDatagram::unbound().unwrap();
    let result = socket.set_write_timeout(Some(Duration::new(0, 0)));
    let err = result.unwrap_err();
    assert_eq!(err.kind(), io::ErrorKind::InvalidInput)Run

#### `pub fn read_timeout(&self) -> Result<Option<Duration>>`[src]

This is supported on Unix only.

Returns the read timeout of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_read_timeout(Some(Duration::new(1, 0))).expect("set_read_timeout function failed");
    assert_eq!(sock.read_timeout().unwrap(), Some(Duration::new(1, 0)));Run

#### `pub fn write_timeout(&self) -> Result<Option<Duration>>`[src]

This is supported on Unix only.

Returns the write timeout of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_write_timeout(Some(Duration::new(1, 0)))
        .expect("set_write_timeout function failed");
    assert_eq!(sock.write_timeout().unwrap(), Some(Duration::new(1, 0)));Run

#### `pub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>`[src]

This is supported on Unix only.

Moves the socket into or out of nonblocking mode.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_nonblocking(true).expect("set_nonblocking function failed");Run

#### `pub fn take_error(&self) -> Result<Option<Error>>`[src]

This is supported on Unix only.

Returns the value of the `SO_ERROR` option.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    if let Ok(Some(err)) = sock.take_error() {
        println!("Got error: {:?}", err);
    }Run

#### `pub fn shutdown(&self, how: Shutdown) -> Result<()>`[src]

This is supported on Unix only.

Shut down the read, write, or both halves of this connection.

This function will cause all pending and future I/O calls on the specified portions to immediately return with an appropriate value (see the documentation of `Shutdown`).

    use std::os::unix::net::UnixDatagram;
    use std::net::Shutdown;

    let sock = UnixDatagram::unbound().unwrap();
    sock.shutdown(Shutdown::Both).expect("shutdown function failed");Run

## Trait Implementations

### `impl AsRawFd for UnixDatagram`[src]

#### `fn as_raw_fd(&self) -> RawFd`[src]

This is supported on Unix only.

Extracts the raw file descriptor. Read more

### `impl FromRawFd for UnixDatagram`[src]

#### `unsafe fn from_raw_fd(fd: RawFd) -> UnixDatagram`[src]

This is supported on Unix only.

Constructs a new instance of `Self` from the given raw file descriptor. Read more

### `impl IntoRawFd for UnixDatagram`[src]

#### `fn into_raw_fd(self) -> RawFd`[src]

This is supported on Unix only.

Consumes this object, returning the raw underlying file descriptor. Read more

### `impl Debug for UnixDatagram`[src]

#### `fn fmt(&self, fmt: &mut Formatter) -> Result`[src]

Formats the value using the given formatter. Read more

## Auto Trait Implementations

### `impl Send for UnixDatagram`

### `impl Sync for UnixDatagram`

## Blanket Implementations

### `impl<T> From for T`[src]

#### `fn from(t: T) -> T`[src]

Performs the conversion.

### `impl<T, U> TryFrom for T where
T: From<U>,` [src]

#### `type Error = !`

🔬 This is a nightly-only experimental API. (`try_from` #33417)

The type returned in the event of a conversion error.

#### `fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`[src]

🔬 This is a nightly-only experimental API. (`try_from` #33417)

Performs the conversion.

### `impl<T, U> TryInto for T where
U: TryFrom<T>,` [src]

#### `type Error = <U as TryFrom<T>>::Error`

🔬 This is a nightly-only experimental API. (`try_from` #33417)

The type returned in the event of a conversion error.

#### `fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`[src]

🔬 This is a nightly-only experimental API. (`try_from` #33417)

Performs the conversion.

### `impl<T, U> Into for T where
U: From<T>,` [src]

#### `fn into(self) -> U`[src]

Performs the conversion.

### `impl<T> Borrow for T where
T: ?Sized,` [src]

####
ⓘImportant traits for &'_ mut I

### Important traits for &'_ mut I

`impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`
`fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

### `impl<T> BorrowMut for T where
T: ?Sized,` [src]

####
ⓘImportant traits for &'_ mut I

### Important traits for &'_ mut I

`impl<'_, I> Iterator for &'_ mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`
`fn borrow_mut(&mut self) -> &mut T`[src]

Mutably borrows from an owned value. Read more

### `impl<T> Any for T where
T: 'static + ?Sized,` [src]

#### `fn get_type_id(&self) -> TypeId`[src]

🔬 This is a nightly-only experimental API. (`get_type_id` #27745)

this method will likely be replaced by an associated static

Gets the `TypeId` of `self`. Read more

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)