diff --git a/examples/async_multiple_requests.rs b/examples/async_multiple_requests.rs new file mode 100644 index 0000000..e5aafb7 --- /dev/null +++ b/examples/async_multiple_requests.rs @@ -0,0 +1,55 @@ +#![deny(warnings)] + +extern crate futures; +extern crate reqwest; +extern crate tokio; +extern crate serde; +#[macro_use] extern crate serde_derive; +extern crate serde_json; + +use futures::Future; +use reqwest::async::{Client, Response}; + +#[derive(Deserialize, Debug)] +struct Slideshow { + title: String, + author: String, +} + +#[derive(Deserialize, Debug)] +struct SlideshowContainer { + slideshow: Slideshow, +} + +fn fetch() -> impl Future { + let client = Client::new(); + + let json = |mut res : Response | { + res.json::() + }; + + let request1 = + client + .get("https://httpbin.org/json") + .send() + .and_then(json); + + let request2 = + client + .get("https://httpbin.org/json") + .send() + .and_then(json); + + request1.join(request2) + .map(|(res1, res2)|{ + println!("{:?}", res1); + println!("{:?}", res2); + }) + .map_err(|err| { + println!("stdout error: {}", err); + }) +} + +fn main() { + tokio::run(fetch()); +}