[−][src]Trait tide::Endpoint
A Tide endpoint.
This trait is automatically implemented for Fn
types, and so is rarely implemented
directly by Tide users.
In practice, endpoints are functions that take a Context<AppData>
as an argument and
return a type T
that implements IntoResponse
.
Examples
Endpoints are implemented as asynchronous functions that make use of language features
currently only available in Rust Nightly. For this reason, we have to explicitly enable
those features with #![feature(async_await, futures_api)]
. To keep examples concise,
the attribute will be omitted in most of the documentation.
A simple endpoint that is invoked on a GET
request and returns a String
:
async fn hello(_cx: tide::Context<()>) -> String { String::from("hello") } fn main() { let mut app = tide::App::new(()); app.at("/hello").get(hello); app.serve("127.0.0.1:8000").unwrap() }
An endpoint with similar functionality that does not make use of the async
keyword would look something like this:
fn hello(_cx: tide::Context<()>) -> impl Future<Output = String> { futures::future::ready(String::from("hello")) } fn main() { let mut app = tide::App::new(()); app.at("/hello").get(hello); app.serve("127.0.0.1:8000").unwrap() }
Tide routes will also accept endpoints with Fn
signatures of this form, but using the async
keyword has better ergonomics.
Associated Types
Loading content...Required methods
Loading content...Implementors
impl<AppData, F: Send + Sync + 'static, Fut> Endpoint<AppData> for F where
F: Fn(Context<AppData>) -> Fut,
Fut: Future + Send + 'static,
Fut::Output: IntoResponse,
[src]
F: Fn(Context<AppData>) -> Fut,
Fut: Future + Send + 'static,
Fut::Output: IntoResponse,