pub struct ResponseFuture<T> { /* private fields */ }
Expand description

Future that will resolve to a Response.

Canceling a response future pre-flight

Response futures can be canceled pre-flight via ResponseFuture::set_pre_flight. This allows you to cancel requests that are no longer necessary once they have been cleared by the ratelimit queue, which may be necessary in scenarios where requests are being spammed. Refer to its documentation for more information.

Errors

Returns an ErrorType::Json error type if serializing the response body of the request failed.

Returns an ErrorType::Parsing error type if the request failed and the error in the response body could not be deserialized.

Returns an ErrorType::RequestCanceled error type if the request was canceled by the user.

Returns an ErrorType::RequestError error type if creating the request failed.

Returns an ErrorType::RequestTimedOut error type if the request timed out. The timeout value is configured via ClientBuilder::timeout.

Returns an ErrorType::Response error type if the request failed.

Returns an ErrorType::ServiceUnavailable error type if the Discord API is unavailable.

Implementations

Set a function to call after clearing the ratelimiter but prior to sending the request to determine if the request is still valid.

This function will be a no-op if the request has failed, has already passed the ratelimiter, or if there is no ratelimiter configured.

Returns whether the pre flight function was set.

Examples

Delete a message, but immediately before sending the request check if the request should still be sent:

use std::{
    collections::HashSet,
    env,
    sync::{Arc, Mutex},
};
use twilight_http::{error::ErrorType, Client};
use twilight_model::id::{ChannelId, MessageId};

let channel_id = ChannelId::new(1);
let message_id = MessageId::new(2);

let channels_ignored = {
    let mut map = HashSet::new();
    map.insert(channel_id);

    Arc::new(Mutex::new(map))
};

let client = Client::new(env::var("DISCORD_TOKEN")?);
let mut req = client.delete_message(channel_id, message_id).exec();

let channels_ignored_clone = channels_ignored.clone();
req.set_pre_flight(Box::new(move || {
    // imagine you have some logic here to external state that checks
    // whether the request should still be performed
    let channels_ignored = channels_ignored_clone.lock().expect("channels poisoned");

    !channels_ignored.contains(&channel_id)
}));

// the pre-flight check will cancel the request
assert!(matches!(
    req.await.unwrap_err().kind(),
    ErrorType::RequestCanceled,
));

Trait Implementations

The type of value produced on completion.
Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Map this future’s output to a different type, returning a new future of the resulting type. Read more
Map this future’s output to a different type, returning a new future of the resulting type. Read more
Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
Convert this future into a single element stream. Read more
Flatten the execution of this future when the output of this future is itself another future. Read more
Flatten the execution of this future when the successful result of this future is a stream. Read more
Fuse a future such that poll will never again be called once it has completed. This method can be used to turn any Future into a FusedFuture. Read more
Do something with the output of a future before passing it on. Read more
A convenience for calling Future::poll on Unpin future types.
Evaluates and consumes the future, returning the resulting output if the future is ready after the first call to Future::poll. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The output that the future will produce on completion.
Which kind of future are we turning this into?
Creates a future from a value. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type of successful values yielded by this future
The type of failures yielded by this future
Poll this TryFuture as if it were a Future. Read more
Maps this future’s success value to a different value. Read more
Maps this future’s success value to a different value, and permits for error handling resulting in the same type. Read more
Maps this future’s error value to a different value. Read more
Maps this future’s Error to a new error type using the Into trait. Read more
Maps this future’s Ok to a new type using the Into trait. Read more
Executes another future after this one resolves successfully. The success value is passed to a closure to create this subsequent future. Read more
Executes another future if this one resolves to an error. The error value is passed to a closure to create this subsequent future. Read more
Do something with the success value of a future before passing it on. Read more
Do something with the error value of a future before passing it on. Read more
Flatten the execution of this future when the successful result of this future is another future. Read more
Flatten the execution of this future when the successful result of this future is a stream. Read more
Unwraps this future’s output, producing a future with this future’s Ok type as its Output type. Read more
Wraps a [TryFuture] into a type that implements Future. Read more
A convenience method for calling [TryFuture::try_poll] on Unpin future types. Read more
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more