# tokio::sync::mpsc::Permit - Rust
API documentation for the Rust `Permit` struct in crate `tokio`.
Keywords: rust, rustlang, rust-lang, Permit

# Struct tokio::sync::mpsc::Permit [−] [src]

    pub struct Permit<'a, T> { /* fields omitted */ }

Permit to send one value into the channel.

`Permit` values are returned by `Sender::reserve()` and `Sender::try_reserve()` and are used to guarantee channel capacity before generating a message to send.

## Implementations

### `impl<T> Permit<'_, T>` [src]

#### `pub fn send(self, value: T)` [src]

Sends a value using the reserved capacity.

Capacity for the message has already been reserved. The message is sent to the receiver and the permit is consumed. The operation will succeed even if the receiver half has been closed. See `Receiver::close` for more details on performing a clean shutdown.

# Examples

    use tokio::sync::mpsc;

    #[tokio::main]
    async fn main() {
        let (tx, mut rx) = mpsc::channel(1);

        // Reserve capacity
        let permit = tx.reserve().await.unwrap();

        // Trying to send directly on the `tx` will fail due to no
        // available capacity.
        assert!(tx.try_send(123).is_err());

        // Send a message on the permit
        permit.send(456);

        // The value sent on the permit is received
        assert_eq!(rx.recv().await.unwrap(), 456);
    }

## Trait Implementations

### `impl<T> Debug for Permit<'_, T>` [src]

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

Formats the value using the given formatter. Read more

### `impl<T> Drop for Permit<'_, T>` [src]

#### `fn drop(&mut self)` [src]

Executes the destructor for this type. Read more

## Auto Trait Implementations

### `impl<'a, T> !RefUnwindSafe for Permit<'a, T>` [src]

### `impl<'a, T> Send for Permit<'a, T> where
T: Send,` [src]

### `impl<'a, T> Sync for Permit<'a, T> where
T: Send,` [src]

### `impl<'a, T> Unpin for Permit<'a, T>` [src]

### `impl<'a, T> !UnwindSafe for Permit<'a, T>` [src]

## Blanket Implementations

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

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

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

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

#### `pub fn borrow(&self) -> &Tⓘ

### Notable traits for &'_ mut F

`impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;`
` [src]

Immutably borrows from an owned value. Read more

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

#### `pub fn borrow_mut(&mut self) -> &mut Tⓘ

### Notable traits for &'_ mut F

`impl<'_, F> Future for &'_ mut F where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;`
` [src]

Mutably borrows from an owned value. Read more

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

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

Performs the conversion.

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

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

Performs the conversion.

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

#### `type Error = Infallible`

The type returned in the event of a conversion error.

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

Performs the conversion.

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

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

The type returned in the event of a conversion error.

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

Performs the conversion.