7/
7.rs

1extern crate backtalk;
2use backtalk::*;
3extern crate futures;
4use futures::Future;
5#[macro_use]
6extern crate serde_json;
7
8fn main() {
9  let mut server = Server::new();
10  use std::sync::Arc;
11  use std::ops::Deref;
12  let database = Arc::new(memory::MemoryAdapter::new());
13  let chan = Arc::new(memory::MemoryChannel::new());
14  server.resource("/cats", move |req: Request| {
15    let database1 = database.clone();
16    let chan1 = chan.clone();
17    let chan2 = chan.clone();
18    req
19      .and_then(move |req| {
20        match req.method() {
21          Method::Listen => chan1.handle(req),
22          _ => database1.handle(req),
23        }
24      })
25      .and_then(move |reply| {
26        util::send_from_reply(reply, chan2.deref())
27      })
28  });
29  server.listen("127.0.0.1:3000");
30}