Browse Source

Rust/rocket: update rocket version to latest (#4344)

* Rust/rocket: update rocket version to latest

Can't build it anymore with the old version:
```
$ cargo build --release
    Updating crates.io index
error: failed to select a version for the requirement `ring = "^0.11.0"`
  candidate versions found which didn't match: 0.14.0, 0.13.5, 0.8.1
  location searched: crates.io index
required by package `cookie v0.9.1`
    ... which is depended on by `rocket v0.3.15`
    ... which is depended on by `rocket v0.1.0`
```

* Rust/rocket/Cargo.toml: don't depend on `rocket_codegen`

Should not be done anymore:
https://github.com/SergioBenitez/Rocket/blob/master/CHANGELOG.md#codegen-rewrite

* Rust/rocket/src/main.rs: update prelude for rocket

As instructed in https://github.com/SergioBenitez/Rocket/blob/master/CHANGELOG.md#codegen-rewrite.

* Rust/rocket/src/main.rs: fix changed imports

Items in `rocket_contrib` were moved under namespaces:
https://github.com/SergioBenitez/Rocket/blob/master/CHANGELOG.md#breaking-changes

* Rust/rocket/src/main.rs: simplify query params

Didn't compile anymore:
```
error[E0277]: the trait bound `QueryString: rocket::request::FromFormValue<'_>` is not satisfied
  --> src/main.rs:59:30
   |
59 | fn queries(conn: db::DbConn, qs: QueryString) -> Json<Vec<models::World>> {
   |                              ^^^^^^^^^^^^^^^ the trait `rocket::request::FromFormValue<'_>` is not implemented for `QueryString`

error[E0277]: the trait bound `QueryString: rocket::request::FromFormValue<'_>` is not satisfied
   --> src/main.rs:103:30
    |
103 | fn updates(conn: db::DbConn, qs: QueryString) -> Json<Vec<models::World>> {
    |                              ^^^^^^^^^^^^^^^ the trait `rocket::request::FromFormValue<'_>` is not implemented for `QueryString`

error: aborting due to 2 previous errors
```
but anyway, a separate struct shouldn't be needed.
Tuomas Lappeteläinen 6 years ago
parent
commit
c1b9bd6579
2 changed files with 25 additions and 24 deletions
  1. 1 2
      frameworks/Rust/rocket/Cargo.toml
  2. 24 22
      frameworks/Rust/rocket/src/main.rs

+ 1 - 2
frameworks/Rust/rocket/Cargo.toml

@@ -6,8 +6,7 @@ authors = ["Marcelo Barbosa <[email protected]>"]
 [dependencies]
 [dependencies]
 diesel = { version = "1.3.2", features = ["postgres", "r2d2"] }
 diesel = { version = "1.3.2", features = ["postgres", "r2d2"] }
 rand = "0.5.5"
 rand = "0.5.5"
-rocket = "0.3.15"
-rocket_codegen = "0.3.15"
+rocket = "0.4.0"
 serde = "1.0.71"
 serde = "1.0.71"
 serde_json = "1.0.24"
 serde_json = "1.0.24"
 serde_derive = "1.0.71"
 serde_derive = "1.0.71"

+ 24 - 22
frameworks/Rust/rocket/src/main.rs

@@ -1,8 +1,7 @@
-#![feature(plugin, custom_derive)]
-#![plugin(rocket_codegen)]
+#![feature(proc_macro_hygiene, decl_macro)]
 
 
 extern crate rand;
 extern crate rand;
-extern crate rocket;
+#[macro_use] extern crate rocket;
 extern crate rocket_contrib;
 extern crate rocket_contrib;
 #[macro_use] extern crate diesel;
 #[macro_use] extern crate diesel;
 #[macro_use] extern crate serde_derive;
 #[macro_use] extern crate serde_derive;
@@ -10,18 +9,13 @@ extern crate rocket_contrib;
 use diesel::prelude::*;
 use diesel::prelude::*;
 use diesel::result::Error;
 use diesel::result::Error;
 use rand::Rng;
 use rand::Rng;
-use rocket_contrib::Json;
-use rocket_contrib::Template;
+use rocket_contrib::json::Json;
+use rocket_contrib::templates::Template;
 
 
 mod db;
 mod db;
 mod models;
 mod models;
 mod schema;
 mod schema;
 
 
-#[derive(FromForm)]
-struct QueryString {
-    q: u16,
-}
-
 fn random_number() -> i32 {
 fn random_number() -> i32 {
     rand::thread_rng().gen_range(1, 10_001)
     rand::thread_rng().gen_range(1, 10_001)
 }
 }
@@ -53,16 +47,20 @@ fn db(conn: db::DbConn) -> Json<models::World> {
 
 
 #[get("/queries")]
 #[get("/queries")]
 fn queries_empty(conn: db::DbConn) -> Json<Vec<models::World>> {
 fn queries_empty(conn: db::DbConn) -> Json<Vec<models::World>> {
-    queries(conn, QueryString { q: 1 })
+    queries(conn, 1)
 }
 }
 
 
-#[get("/queries?<qs>")]
-fn queries(conn: db::DbConn, qs: QueryString) -> Json<Vec<models::World>> {
+#[get("/queries?<q>")]
+fn queries(conn: db::DbConn, q: u16) -> Json<Vec<models::World>> {
     use schema::world::dsl::*;
     use schema::world::dsl::*;
 
 
-    let mut q = qs.q;
-    if q == 0 { q = 1 }
-    if q > 500 { q = 500; }
+    let q = if q == 0 {
+        1
+    } else if q > 500 {
+        500
+    } else {
+        q
+    };
 
 
     let mut results = Vec::with_capacity(q as usize);
     let mut results = Vec::with_capacity(q as usize);
 
 
@@ -97,16 +95,20 @@ fn fortunes(conn: db::DbConn) -> Template {
 
 
 #[get("/updates")]
 #[get("/updates")]
 fn updates_empty(conn: db::DbConn) -> Json<Vec<models::World>> {
 fn updates_empty(conn: db::DbConn) -> Json<Vec<models::World>> {
-    updates(conn, QueryString { q: 1 })
+    updates(conn, 1)
 }
 }
 
 
-#[get("/updates?<qs>")]
-fn updates(conn: db::DbConn, qs: QueryString) -> Json<Vec<models::World>> {
+#[get("/updates?<q>")]
+fn updates(conn: db::DbConn, q: u16) -> Json<Vec<models::World>> {
     use schema::world::dsl::*;
     use schema::world::dsl::*;
 
 
-    let mut q = qs.q;
-    if q == 0 { q = 1 }
-    if q > 500 { q = 500; }
+    let q = if q == 0 {
+        1
+    } else if q > 500 {
+        500
+    } else {
+        q
+    };
 
 
     let mut results = Vec::with_capacity(q as usize);
     let mut results = Vec::with_capacity(q as usize);