Rocket

A web framework for Rust. https://rocket.rs (mirror)
git clone git://git.thc420.xyz/Rocket
Log | Files | Refs | README

commit 23151719719b44985284b4334b00bc74fb2d7f1c
parent be784a7845d7043e2f80dbb710d3ef4b96fee1d8
Author: Jeb Rosen <jeb@jebrosen.com>
Date:   Wed, 12 Jun 2019 19:17:59 -0700

Migrate contrib to Rust 2018.

Diffstat:
Mcontrib/codegen/Cargo.toml | 1+
Mcontrib/codegen/src/database.rs | 8++++----
Mcontrib/codegen/src/lib.rs | 5+++--
Mcontrib/lib/Cargo.toml | 1+
Mcontrib/lib/src/compression/fairing.rs | 4++--
Mcontrib/lib/src/compression/mod.rs | 12+++++-------
Mcontrib/lib/src/compression/responder.rs | 2+-
Mcontrib/lib/src/databases.rs | 34+++++++++++++++++-----------------
Mcontrib/lib/src/helmet/helmet.rs | 6+++---
Mcontrib/lib/src/helmet/mod.rs | 2--
Mcontrib/lib/src/helmet/policy.rs | 24++++++++++++------------
Mcontrib/lib/src/json.rs | 17+++++++----------
Mcontrib/lib/src/lib.rs | 4+++-
Mcontrib/lib/src/msgpack.rs | 16+++++++---------
Mcontrib/lib/src/serve.rs | 8++++----
Mcontrib/lib/src/templates/context.rs | 4++--
Mcontrib/lib/src/templates/engine.rs | 12+++++++-----
Mcontrib/lib/src/templates/fairing.rs | 20+++++++++-----------
Mcontrib/lib/src/templates/handlebars_templates.rs | 7++++---
Mcontrib/lib/src/templates/metadata.rs | 10+++++-----
Mcontrib/lib/src/templates/mod.rs | 14+++++---------
Mcontrib/lib/src/templates/tera_templates.rs | 7++++---
Mcontrib/lib/src/uuid.rs | 4++--
Mcontrib/lib/tests/compress_responder.rs | 8+-------
Mcontrib/lib/tests/compression_fairing.rs | 8+-------
Mcontrib/lib/tests/databases.rs | 5+----
Mcontrib/lib/tests/helmet.rs | 22+++++++++-------------
Mcontrib/lib/tests/static_files.rs | 3---
Mcontrib/lib/tests/templates.rs | 9+++------
29 files changed, 123 insertions(+), 154 deletions(-)

diff --git a/contrib/codegen/Cargo.toml b/contrib/codegen/Cargo.toml @@ -10,6 +10,7 @@ readme = "../../README.md" keywords = ["rocket", "contrib", "code", "generation", "proc-macro"] license = "MIT/Apache-2.0" build = "build.rs" +edition = "2018" [features] database_attribute = [] diff --git a/contrib/codegen/src/database.rs b/contrib/codegen/src/database.rs @@ -1,6 +1,6 @@ use proc_macro::TokenStream; use devise::{Spanned, Result}; -use syn::{DataStruct, Fields, Data, Type, LitStr, DeriveInput, Ident, Visibility}; +use crate::syn::{DataStruct, Fields, Data, Type, LitStr, DeriveInput, Ident, Visibility}; #[derive(Debug)] struct DatabaseInvocation { @@ -24,12 +24,12 @@ const NO_GENERIC_STRUCTS: &str = "`database` attribute cannot be applied to stru with generics"; fn parse_invocation(attr: TokenStream, input: TokenStream) -> Result<DatabaseInvocation> { - let attr_stream2 = ::proc_macro2::TokenStream::from(attr); + let attr_stream2 = crate::proc_macro2::TokenStream::from(attr); let attr_span = attr_stream2.span(); - let string_lit = ::syn::parse2::<LitStr>(attr_stream2) + let string_lit = crate::syn::parse2::<LitStr>(attr_stream2) .map_err(|_| attr_span.error("expected string literal"))?; - let input = ::syn::parse::<DeriveInput>(input).unwrap(); + let input = crate::syn::parse::<DeriveInput>(input).unwrap(); if !input.generics.params.is_empty() { return Err(input.generics.span().error(NO_GENERIC_STRUCTS)); } diff --git a/contrib/codegen/src/lib.rs b/contrib/codegen/src/lib.rs @@ -2,6 +2,8 @@ #![feature(crate_visibility_modifier)] #![recursion_limit="256"] +#![warn(rust_2018_idioms)] + //! # Rocket Contrib - Code Generation //! This crate implements the code generation portion of the Rocket Contrib //! crate. This is for officially sanctioned contributor libraries that require @@ -24,7 +26,6 @@ //! DATABASE_NAME := (string literal) //! </pre> -extern crate devise; extern crate proc_macro; #[allow(unused_imports)] @@ -43,7 +44,7 @@ use proc_macro::TokenStream; #[cfg(feature = "database_attribute")] #[proc_macro_attribute] pub fn database(attr: TokenStream, input: TokenStream) -> TokenStream { - ::database::database_attr(attr, input).unwrap_or_else(|diag| { + crate::database::database_attr(attr, input).unwrap_or_else(|diag| { diag.emit(); TokenStream::new() }) diff --git a/contrib/lib/Cargo.toml b/contrib/lib/Cargo.toml @@ -9,6 +9,7 @@ repository = "https://github.com/SergioBenitez/Rocket" readme = "../../README.md" keywords = ["rocket", "web", "framework", "contrib", "contributed"] license = "MIT/Apache-2.0" +edition = "2018" [features] # Internal use only. diff --git a/contrib/lib/src/compression/fairing.rs b/contrib/lib/src/compression/fairing.rs @@ -144,9 +144,9 @@ impl Fairing for Compression { Ok(rocket.manage(ctxt)) } - fn on_response(&self, request: &Request, response: &mut Response) { + fn on_response(&self, request: &Request<'_>, response: &mut Response<'_>) { let context = request - .guard::<::rocket::State<Context>>() + .guard::<rocket::State<'_, Context>>() .expect("Compression Context registered in on_attach"); super::CompressionUtils::compress_response(request, response, &context.exclusions); diff --git a/contrib/lib/src/compression/mod.rs b/contrib/lib/src/compression/mod.rs @@ -22,8 +22,6 @@ //! application vulnerable to attacks including BREACH. These risks should be //! evaluated in the context of your application before enabling compression. //! -#[cfg(feature="brotli_compression")] extern crate brotli; -#[cfg(feature="gzip_compression")] extern crate flate2; mod fairing; mod responder; @@ -38,15 +36,15 @@ use rocket::http::hyper::header::{ContentEncoding, Encoding}; use rocket::{Request, Response}; #[cfg(feature = "brotli_compression")] -use self::brotli::enc::backward_references::BrotliEncoderMode; +use brotli::enc::backward_references::BrotliEncoderMode; #[cfg(feature = "gzip_compression")] -use self::flate2::read::GzEncoder; +use flate2::read::GzEncoder; struct CompressionUtils; impl CompressionUtils { - fn accepts_encoding(request: &Request, encoding: &str) -> bool { + fn accepts_encoding(request: &Request<'_>, encoding: &str) -> bool { request .headers() .get("Accept-Encoding") @@ -55,7 +53,7 @@ impl CompressionUtils { .any(|accept| accept == encoding) } - fn already_encoded(response: &Response) -> bool { + fn already_encoded(response: &Response<'_>) -> bool { response.headers().get("Content-Encoding").next().is_some() } @@ -84,7 +82,7 @@ impl CompressionUtils { } } - fn compress_response(request: &Request, response: &mut Response, exclusions: &[MediaType]) { + fn compress_response(request: &Request<'_>, response: &mut Response<'_>, exclusions: &[MediaType]) { if CompressionUtils::already_encoded(response) { return; } diff --git a/contrib/lib/src/compression/responder.rs b/contrib/lib/src/compression/responder.rs @@ -36,7 +36,7 @@ pub struct Compress<R>(pub R); impl<'r, R: Responder<'r>> Responder<'r> for Compress<R> { #[inline(always)] - fn respond_to(self, request: &Request) -> response::Result<'r> { + fn respond_to(self, request: &Request<'_>) -> response::Result<'r> { let mut response = Response::build() .merge(self.0.respond_to(request)?) .finalize(); diff --git a/contrib/lib/src/databases.rs b/contrib/lib/src/databases.rs @@ -86,7 +86,7 @@ //! # struct LogsDbConn(diesel::SqliteConnection); //! # //! # type Logs = (); -//! # type Result<T> = ::std::result::Result<T, ()>; +//! # type Result<T> = std::result::Result<T, ()>; //! # //! #[get("/logs/<id>")] //! fn get_logs(conn: LogsDbConn, id: usize) -> Result<Logs> { @@ -229,7 +229,7 @@ //! allowing the type to be used as a request guard. This implementation //! retrieves a connection from the database pool or fails with a //! `Status::ServiceUnavailable` if no connections are available. The macro also -//! generates an implementation of the [`Deref`](::std::ops::Deref) trait with +//! generates an implementation of the [`Deref`](std::ops::Deref) trait with //! the internal `Poolable` type as the target. //! //! The macro will also generate two inherent methods on the decorated type: @@ -491,7 +491,7 @@ pub enum ConfigError { /// configuration. MissingKey, /// The configuration associated with the key isn't a - /// [`Table`](::rocket::config::Table). + /// [`Table`](rocket::config::Table). MalformedConfiguration, /// The required `url` key is missing. MissingUrl, @@ -594,7 +594,7 @@ pub fn database_config<'a>( } impl<'a> Display for ConfigError { - fn fmt(&self, f: &mut Formatter) -> fmt::Result { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { match self { ConfigError::MissingTable => { write!(f, "A table named `databases` was not found for this configuration") @@ -659,7 +659,7 @@ impl<'a> Display for ConfigError { /// # use std::fmt; /// # use rocket_contrib::databases::r2d2; /// # #[derive(Debug)] pub struct Error; -/// # impl ::std::error::Error for Error { } +/// # impl std::error::Error for Error { } /// # impl fmt::Display for Error { /// # fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { Ok(()) } /// # } @@ -667,7 +667,7 @@ impl<'a> Display for ConfigError { /// # pub struct Connection; /// # pub struct ConnectionManager; /// # -/// # type Result<T> = ::std::result::Result<T, Error>; +/// # type Result<T> = std::result::Result<T, Error>; /// # /// # impl ConnectionManager { /// # pub fn new(url: &str) -> Result<Self> { Err(Error) } @@ -717,7 +717,7 @@ pub trait Poolable: Send + Sized + 'static { /// Creates an `r2d2` connection pool for `Manager::Connection`, returning /// the pool on success. - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error>; + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error>; } #[cfg(feature = "diesel_sqlite_pool")] @@ -725,7 +725,7 @@ impl Poolable for diesel::SqliteConnection { type Manager = diesel::r2d2::ConnectionManager<diesel::SqliteConnection>; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = diesel::r2d2::ConnectionManager::new(config.url); r2d2::Pool::builder().max_size(config.pool_size).build(manager) } @@ -736,7 +736,7 @@ impl Poolable for diesel::PgConnection { type Manager = diesel::r2d2::ConnectionManager<diesel::PgConnection>; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = diesel::r2d2::ConnectionManager::new(config.url); r2d2::Pool::builder().max_size(config.pool_size).build(manager) } @@ -747,7 +747,7 @@ impl Poolable for diesel::MysqlConnection { type Manager = diesel::r2d2::ConnectionManager<diesel::MysqlConnection>; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = diesel::r2d2::ConnectionManager::new(config.url); r2d2::Pool::builder().max_size(config.pool_size).build(manager) } @@ -759,7 +759,7 @@ impl Poolable for postgres::Connection { type Manager = r2d2_postgres::PostgresConnectionManager; type Error = DbError<postgres::Error>; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_postgres::PostgresConnectionManager::new(config.url, r2d2_postgres::TlsMode::None) .map_err(DbError::Custom)?; @@ -773,7 +773,7 @@ impl Poolable for mysql::Conn { type Manager = r2d2_mysql::MysqlConnectionManager; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let opts = mysql::OptsBuilder::from_opts(config.url); let manager = r2d2_mysql::MysqlConnectionManager::new(opts); r2d2::Pool::builder().max_size(config.pool_size).build(manager) @@ -785,7 +785,7 @@ impl Poolable for rusqlite::Connection { type Manager = r2d2_sqlite::SqliteConnectionManager; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_sqlite::SqliteConnectionManager::file(config.url); r2d2::Pool::builder().max_size(config.pool_size).build(manager) @@ -797,7 +797,7 @@ impl Poolable for rusted_cypher::GraphClient { type Manager = r2d2_cypher::CypherConnectionManager; type Error = r2d2::Error; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_cypher::CypherConnectionManager { url: config.url.to_string() }; r2d2::Pool::builder().max_size(config.pool_size).build(manager) } @@ -808,7 +808,7 @@ impl Poolable for redis::Connection { type Manager = r2d2_redis::RedisConnectionManager; type Error = DbError<redis::RedisError>; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_redis::RedisConnectionManager::new(config.url).map_err(DbError::Custom)?; r2d2::Pool::builder().max_size(config.pool_size).build(manager) .map_err(DbError::PoolError) @@ -820,7 +820,7 @@ impl Poolable for mongodb::db::Database { type Manager = r2d2_mongodb::MongodbConnectionManager; type Error = DbError<mongodb::Error>; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_mongodb::MongodbConnectionManager::new_with_uri(config.url).map_err(DbError::Custom)?; r2d2::Pool::builder().max_size(config.pool_size).build(manager).map_err(DbError::PoolError) } @@ -831,7 +831,7 @@ impl Poolable for memcache::Client { type Manager = r2d2_memcache::MemcacheConnectionManager; type Error = DbError<memcache::MemcacheError>; - fn pool(config: DatabaseConfig) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { + fn pool(config: DatabaseConfig<'_>) -> Result<r2d2::Pool<Self::Manager>, Self::Error> { let manager = r2d2_memcache::MemcacheConnectionManager::new(config.url); r2d2::Pool::builder().max_size(config.pool_size).build(manager).map_err(DbError::PoolError) } diff --git a/contrib/lib/src/helmet/helmet.rs b/contrib/lib/src/helmet/helmet.rs @@ -5,7 +5,7 @@ use rocket::http::uncased::UncasedStr; use rocket::fairing::{Fairing, Info, Kind}; use rocket::{Request, Response, Rocket}; -use helmet::*; +use crate::helmet::*; /// A [`Fairing`](../../rocket/fairing/trait.Fairing.html) that adds HTTP /// headers to outgoing responses that control security features on the browser. @@ -167,7 +167,7 @@ impl SpaceHelmet { /// Sets all of the headers in `self.policies` in `response` as long as the /// header is not already in the response. - fn apply(&self, response: &mut Response) { + fn apply(&self, response: &mut Response<'_>) { for policy in self.policies.values() { let name = policy.name(); if response.headers().contains(name.as_str()) { @@ -196,7 +196,7 @@ impl Fairing for SpaceHelmet { } } - fn on_response(&self, _request: &Request, response: &mut Response) { + fn on_response(&self, _request: &Request<'_>, response: &mut Response<'_>) { self.apply(response); } diff --git a/contrib/lib/src/helmet/mod.rs b/contrib/lib/src/helmet/mod.rs @@ -103,8 +103,6 @@ //! //! [OWASP]: https://www.owasp.org/index.php/OWASP_Secure_Headers_Project#tab=Headers -extern crate time; - mod helmet; mod policy; diff --git a/contrib/lib/src/helmet/policy.rs b/contrib/lib/src/helmet/policy.rs @@ -4,16 +4,16 @@ use std::borrow::Cow; use rocket::http::{Header, uri::Uri, uncased::UncasedStr}; -use helmet::time::Duration; +use time::Duration; /// Trait implemented by security and privacy policy headers. /// /// Types that implement this trait can be [`enable()`]d and [`disable()`]d on /// instances of [`SpaceHelmet`]. /// -/// [`SpaceHelmet`]: ::helmet::SpaceHelmet -/// [`enable()`]: ::helmet::SpaceHelmet::enable() -/// [`disable()`]: ::helmet::SpaceHelmet::disable() +/// [`SpaceHelmet`]: crate::helmet::SpaceHelmet +/// [`enable()`]: crate::helmet::SpaceHelmet::enable() +/// [`disable()`]: crate::helmet::SpaceHelmet::disable() pub trait Policy: Default + Send + Sync + 'static { /// The actual name of the HTTP header. /// @@ -151,8 +151,8 @@ impl Default for Referrer { } } -impl<'h, 'a> Into<Header<'h>> for &'a Referrer { - fn into(self) -> Header<'h> { +impl Into<Header<'static>> for &Referrer { + fn into(self) -> Header<'static> { let policy_string = match self { Referrer::NoReferrer => "no-referrer", Referrer::NoReferrerWhenDowngrade => "no-referrer-when-downgrade", @@ -209,7 +209,7 @@ impl Default for ExpectCt { } } -impl<'a> Into<Header<'static>> for &'a ExpectCt { +impl Into<Header<'static>> for &ExpectCt { fn into(self) -> Header<'static> { let policy_string = match self { ExpectCt::Enforce(age) => format!("max-age={}, enforce", age.num_seconds()), @@ -243,8 +243,8 @@ impl Default for NoSniff { } } -impl<'h, 'a> Into<Header<'h>> for &'a NoSniff { - fn into(self) -> Header<'h> { +impl Into<Header<'static>> for &NoSniff { + fn into(self) -> Header<'static> { Header::new(NoSniff::NAME, "nosniff") } } @@ -295,7 +295,7 @@ impl Default for Hsts { } } -impl<'a> Into<Header<'static>> for &'a Hsts { +impl Into<Header<'static>> for &Hsts { fn into(self) -> Header<'static> { let policy_string = match self { Hsts::Enable(age) => format!("max-age={}", age.num_seconds()), @@ -345,7 +345,7 @@ impl Default for Frame { } } -impl<'a> Into<Header<'static>> for &'a Frame { +impl Into<Header<'static>> for &Frame { fn into(self) -> Header<'static> { let policy_string: Cow<'static, str> = match self { Frame::Deny => "DENY".into(), @@ -387,7 +387,7 @@ impl Default for XssFilter { } } -impl<'a> Into<Header<'static>> for &'a XssFilter { +impl Into<Header<'static>> for &XssFilter { fn into(self) -> Header<'static> { let policy_string: Cow<'static, str> = match self { XssFilter::Disable => "0".into(), diff --git a/contrib/lib/src/json.rs b/contrib/lib/src/json.rs @@ -14,9 +14,6 @@ //! features = ["json"] //! ``` -extern crate serde; -extern crate serde_json; - use std::ops::{Deref, DerefMut}; use std::io::{self, Read}; use std::iter::FromIterator; @@ -27,11 +24,11 @@ use rocket::data::{Outcome, Transform, Transform::*, Transformed, Data, FromData use rocket::response::{self, Responder, content}; use rocket::http::Status; -use self::serde::{Serialize, Serializer}; -use self::serde::de::{Deserialize, Deserializer}; +use serde::{Serialize, Serializer}; +use serde::de::{Deserialize, Deserializer}; #[doc(hidden)] -pub use self::serde_json::{json_internal, json_internal_vec}; +pub use serde_json::{json_internal, json_internal_vec}; /// The JSON type: implements [`FromData`] and [`Responder`], allowing you to /// easily consume and respond with JSON. @@ -136,7 +133,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for Json<T> { type Owned = String; type Borrowed = str; - fn transform(r: &Request, d: Data) -> Transform<Outcome<Self::Owned, Self::Error>> { + fn transform(r: &Request<'_>, d: Data) -> Transform<Outcome<Self::Owned, Self::Error>> { let size_limit = r.limits().get("json").unwrap_or(LIMIT); let mut s = String::with_capacity(512); match d.open().take(size_limit).read_to_string(&mut s) { @@ -145,7 +142,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for Json<T> { } } - fn from_data(_: &Request, o: Transformed<'a, Self>) -> Outcome<Self, Self::Error> { + fn from_data(_: &Request<'_>, o: Transformed<'a, Self>) -> Outcome<Self, Self::Error> { let string = o.borrowed()?; match serde_json::from_str(&string) { Ok(v) => Success(Json(v)), @@ -165,7 +162,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for Json<T> { /// JSON and a fixed-size body with the serialized value. If serialization /// fails, an `Err` of `Status::InternalServerError` is returned. impl<'a, T: Serialize> Responder<'a> for Json<T> { - fn respond_to(self, req: &Request) -> response::Result<'a> { + fn respond_to(self, req: &Request<'_>) -> response::Result<'a> { serde_json::to_string(&self.0).map(|string| { content::Json(string).respond_to(req).unwrap() }).map_err(|e| { @@ -288,7 +285,7 @@ impl<T> FromIterator<T> for JsonValue where serde_json::Value: FromIterator<T> { /// and a fixed-size body with the serialized value. impl<'a> Responder<'a> for JsonValue { #[inline] - fn respond_to(self, req: &Request) -> response::Result<'a> { + fn respond_to(self, req: &Request<'_>) -> response::Result<'a> { content::Json(self.0.to_string()).respond_to(req) } } diff --git a/contrib/lib/src/lib.rs b/contrib/lib/src/lib.rs @@ -6,6 +6,9 @@ #![doc(html_favicon_url = "https://rocket.rs/v0.5/images/favicon.ico")] #![doc(html_logo_url = "https://rocket.rs/v0.5/images/logo-boxed.png")] +#![warn(rust_2018_idioms)] +#![allow(unused_extern_crates)] + //! This crate contains officially sanctioned contributor libraries that provide //! functionality commonly used by Rocket applications. //! @@ -54,5 +57,4 @@ #[cfg(feature = "helmet")] pub mod helmet; #[cfg(any(feature="brotli_compression", feature="gzip_compression"))] pub mod compression; -#[cfg(feature="databases")] extern crate rocket_contrib_codegen; #[cfg(feature="databases")] #[doc(hidden)] pub use rocket_contrib_codegen::*; diff --git a/contrib/lib/src/msgpack.rs b/contrib/lib/src/msgpack.rs @@ -1,6 +1,6 @@ //! Automatic MessagePack (de)serialization support. //! -//! See the [`MsgPack`](msgpack::MessagePack) type for further details. +//! See the [`MsgPack`](crate::msgpack::MsgPack) type for further details. //! //! # Enabling //! @@ -13,8 +13,6 @@ //! default-features = false //! features = ["msgpack"] //! ``` -extern crate serde; -extern crate rmp_serde; use std::io::Read; use std::ops::{Deref, DerefMut}; @@ -25,10 +23,10 @@ use rocket::data::{Outcome, Transform, Transform::*, Transformed, Data, FromData use rocket::response::{self, Responder, content}; use rocket::http::Status; -use self::serde::Serialize; -use self::serde::de::Deserialize; +use serde::Serialize; +use serde::de::Deserialize; -pub use self::rmp_serde::decode::Error; +pub use rmp_serde::decode::Error; /// The `MsgPack` type: implements [`FromData`] and [`Responder`], allowing you /// to easily consume and respond with MessagePack data. @@ -121,7 +119,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for MsgPack<T> { type Owned = Vec<u8>; type Borrowed = [u8]; - fn transform(r: &Request, d: Data) -> Transform<Outcome<Self::Owned, Self::Error>> { + fn transform(r: &Request<'_>, d: Data) -> Transform<Outcome<Self::Owned, Self::Error>> { let mut buf = Vec::new(); let size_limit = r.limits().get("msgpack").unwrap_or(LIMIT); match d.open().take(size_limit).read_to_end(&mut buf) { @@ -130,7 +128,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for MsgPack<T> { } } - fn from_data(_: &Request, o: Transformed<'a, Self>) -> Outcome<Self, Self::Error> { + fn from_data(_: &Request<'_>, o: Transformed<'a, Self>) -> Outcome<Self, Self::Error> { use self::Error::*; let buf = o.borrowed()?; @@ -153,7 +151,7 @@ impl<'a, T: Deserialize<'a>> FromData<'a> for MsgPack<T> { /// Content-Type `MsgPack` and a fixed-size body with the serialization. If /// serialization fails, an `Err` of `Status::InternalServerError` is returned. impl<T: Serialize> Responder<'static> for MsgPack<T> { - fn respond_to(self, req: &Request) -> response::Result<'static> { + fn respond_to(self, req: &Request<'_>) -> response::Result<'static> { rmp_serde::to_vec(&self.0).map_err(|e| { error_!("MsgPack failed to serialize: {:?}", e); Status::InternalServerError diff --git a/contrib/lib/src/serve.rs b/contrib/lib/src/serve.rs @@ -86,7 +86,7 @@ impl Default for Options { } } -impl ::std::ops::BitOr for Options { +impl std::ops::BitOr for Options { type Output = Self; #[inline(always)] @@ -272,8 +272,8 @@ impl Into<Vec<Route>> for StaticFiles { } impl Handler for StaticFiles { - fn handle<'r>(&self, req: &'r Request, _: Data) -> Outcome<'r> { - fn handle_index<'r>(opt: Options, r: &'r Request, path: &Path) -> Outcome<'r> { + fn handle<'r>(&self, req: &'r Request<'_>, _: Data) -> Outcome<'r> { + fn handle_index<'r>(opt: Options, r: &'r Request<'_>, path: &Path) -> Outcome<'r> { if !opt.contains(Options::Index) { return Outcome::failure(Status::NotFound); } @@ -292,7 +292,7 @@ impl Handler for StaticFiles { // Otherwise, we're handling segments. Get the segments as a `PathBuf`, // only allowing dotfiles if the user allowed it. let allow_dotfiles = self.options.contains(Options::DotFiles); - let path = req.get_segments::<Segments>(0) + let path = req.get_segments::<Segments<'_>>(0) .and_then(|res| res.ok()) .and_then(|segments| segments.into_path_buf(allow_dotfiles).ok()) .map(|path| self.root.join(path)) diff --git a/contrib/lib/src/templates/context.rs b/contrib/lib/src/templates/context.rs @@ -1,7 +1,7 @@ use std::path::{Path, PathBuf}; use std::collections::HashMap; -use templates::{glob, Engines, TemplateInfo}; +use crate::templates::{Engines, TemplateInfo}; use rocket::http::ContentType; @@ -25,7 +25,7 @@ impl Context { glob_path.set_extension(ext); let glob_path = glob_path.to_str().expect("valid glob path string"); - for path in glob(glob_path).unwrap().filter_map(Result::ok) { + for path in glob::glob(glob_path).unwrap().filter_map(Result::ok) { let (name, data_type_str) = split_path(&root, &path); if let Some(info) = templates.get(&*name) { warn_!("Template name '{}' does not have a unique path.", name); diff --git a/contrib/lib/src/templates/engine.rs b/contrib/lib/src/templates/engine.rs @@ -1,9 +1,11 @@ use std::collections::HashMap; -use templates::{TemplateInfo, serde::Serialize}; +use serde::Serialize; -#[cfg(feature = "tera_templates")] use templates::tera::Tera; -#[cfg(feature = "handlebars_templates")] use templates::handlebars::Handlebars; +use crate::templates::TemplateInfo; + +#[cfg(feature = "tera_templates")] use crate::templates::tera::Tera; +#[cfg(feature = "handlebars_templates")] use crate::templates::handlebars::Handlebars; crate trait Engine: Send + Sync + 'static { const EXT: &'static str; @@ -40,8 +42,8 @@ crate trait Engine: Send + Sync + 'static { /// # } /// ``` /// -/// [`tera::Value`]: ::templates::tera::Value -/// [`tera::Result`]: ::templates::tera::Result +/// [`tera::Value`]: crate::templates::tera::Value +/// [`tera::Result`]: crate::templates::tera::Result pub struct Engines { /// A `Tera` templating engine. This field is only available when the /// `tera_templates` feature is enabled. When calling methods on the `Tera` diff --git a/contrib/lib/src/templates/fairing.rs b/contrib/lib/src/templates/fairing.rs @@ -1,4 +1,4 @@ -use templates::{DEFAULT_TEMPLATE_DIR, Context, Engines}; +use crate::templates::{DEFAULT_TEMPLATE_DIR, Context, Engines}; use rocket::Rocket; use rocket::config::ConfigError; @@ -9,7 +9,7 @@ crate use self::context::ContextManager; #[cfg(not(debug_assertions))] mod context { use std::ops::Deref; - use templates::Context; + use crate::templates::Context; /// Wraps a Context. With `cfg(debug_assertions)` active, this structure /// additionally provides a method to reload the context at runtime. @@ -32,15 +32,13 @@ mod context { #[cfg(debug_assertions)] mod context { - extern crate notify; - use std::ops::{Deref, DerefMut}; use std::sync::{RwLock, Mutex}; use std::sync::mpsc::{channel, Receiver}; - use templates::{Context, Engines}; + use notify::{raw_watcher, RawEvent, RecommendedWatcher, RecursiveMode, Watcher}; - use self::notify::{raw_watcher, RawEvent, RecommendedWatcher, RecursiveMode, Watcher}; + use crate::templates::{Context, Engines}; /// Wraps a Context. With `cfg(debug_assertions)` active, this structure /// additionally provides a method to reload the context at runtime. @@ -75,7 +73,7 @@ mod context { } } - crate fn context<'a>(&'a self) -> impl Deref<Target=Context> + 'a { + crate fn context(&self) -> impl Deref<Target=Context> + '_ { self.context.read().unwrap() } @@ -83,7 +81,7 @@ mod context { self.watcher.is_some() } - fn context_mut<'a>(&'a self) -> impl DerefMut<Target=Context> + 'a { + fn context_mut(&self) -> impl DerefMut<Target=Context> + '_ { self.context.write().unwrap() } @@ -123,7 +121,7 @@ pub struct TemplateFairing { /// The user-provided customization callback, allowing the use of /// functionality specific to individual template engines. In debug mode, /// this callback might be run multiple times as templates are reloaded. - crate custom_callback: Box<Fn(&mut Engines) + Send + Sync + 'static>, + crate custom_callback: Box<dyn Fn(&mut Engines) + Send + Sync + 'static>, } impl Fairing for TemplateFairing { @@ -165,8 +163,8 @@ impl Fairing for TemplateFairing { } #[cfg(debug_assertions)] - fn on_request(&self, req: &mut ::rocket::Request, _data: &::rocket::Data) { - let cm = req.guard::<::rocket::State<ContextManager>>() + fn on_request(&self, req: &mut rocket::Request<'_>, _data: &rocket::Data) { + let cm = req.guard::<rocket::State<'_, ContextManager>>() .expect("Template ContextManager registered in on_attach"); cm.reload_if_needed(&*self.custom_callback); diff --git a/contrib/lib/src/templates/handlebars_templates.rs b/contrib/lib/src/templates/handlebars_templates.rs @@ -1,7 +1,8 @@ -use templates::serde::Serialize; -use templates::{Engine, TemplateInfo}; +use serde::Serialize; -pub use templates::handlebars::Handlebars; +use crate::templates::{Engine, TemplateInfo}; + +pub use crate::templates::handlebars::Handlebars; impl Engine for Handlebars { const EXT: &'static str = "hbs"; diff --git a/contrib/lib/src/templates/metadata.rs b/contrib/lib/src/templates/metadata.rs @@ -2,7 +2,7 @@ use rocket::{Request, State, Outcome}; use rocket::http::Status; use rocket::request::{self, FromRequest}; -use templates::ContextManager; +use crate::templates::ContextManager; /// Request guard for dynamiclly querying template metadata. /// @@ -39,7 +39,7 @@ use templates::ContextManager; /// ``` pub struct Metadata<'a>(&'a ContextManager); -impl<'a> Metadata<'a> { +impl Metadata<'_> { /// Returns `true` if the template with the given `name` is currently /// loaded. Otherwise, returns `false`. /// @@ -87,11 +87,11 @@ impl<'a> Metadata<'a> { /// Retrieves the template metadata. If a template fairing hasn't been attached, /// an error is printed and an empty `Err` with status `InternalServerError` /// (`500`) is returned. -impl<'a, 'r> FromRequest<'a, 'r> for Metadata<'a> { +impl<'a> FromRequest<'a, '_> for Metadata<'a> { type Error = (); - fn from_request(request: &'a Request) -> request::Outcome<Self, ()> { - request.guard::<State<ContextManager>>() + fn from_request(request: &'a Request<'_>) -> request::Outcome<Self, ()> { + request.guard::<State<'_, ContextManager>>() .succeeded() .and_then(|cm| Some(Outcome::Success(Metadata(cm.inner())))) .unwrap_or_else(|| { diff --git a/contrib/lib/src/templates/mod.rs b/contrib/lib/src/templates/mod.rs @@ -111,10 +111,6 @@ //! [`Template::custom()`]: templates::Template::custom() //! [`Template::render()`]: templates::Template::render() -extern crate serde; -extern crate serde_json; -extern crate glob; - #[cfg(feature = "tera_templates")] pub extern crate tera; #[cfg(feature = "tera_templates")] mod tera_templates; @@ -133,9 +129,9 @@ crate use self::fairing::ContextManager; use self::engine::Engine; use self::fairing::TemplateFairing; -use self::serde::Serialize; -use self::serde_json::{Value, to_value}; -use self::glob::glob; + +use serde::Serialize; +use serde_json::{Value, to_value}; use std::borrow::Cow; use std::path::PathBuf; @@ -387,8 +383,8 @@ impl Template { /// extension and a fixed-size body containing the rendered template. If /// rendering fails, an `Err` of `Status::InternalServerError` is returned. impl Responder<'static> for Template { - fn respond_to(self, req: &Request) -> response::Result<'static> { - let ctxt = req.guard::<State<ContextManager>>().succeeded().ok_or_else(|| { + fn respond_to(self, req: &Request<'_>) -> response::Result<'static> { + let ctxt = req.guard::<State<'_, ContextManager>>().succeeded().ok_or_else(|| { error_!("Uninitialized template context: missing fairing."); info_!("To use templates, you must attach `Template::fairing()`."); info_!("See the `Template` documentation for more information."); diff --git a/contrib/lib/src/templates/tera_templates.rs b/contrib/lib/src/templates/tera_templates.rs @@ -1,7 +1,8 @@ -use templates::serde::Serialize; -use templates::{Engine, TemplateInfo}; +use serde::Serialize; -pub use templates::tera::Tera; +use crate::templates::{Engine, TemplateInfo}; + +pub use crate::templates::tera::Tera; impl Engine for Tera { const EXT: &'static str = "tera"; diff --git a/contrib/lib/src/uuid.rs b/contrib/lib/src/uuid.rs @@ -95,7 +95,7 @@ impl Uuid { impl fmt::Display for Uuid { #[inline(always)] - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { self.0.fmt(f) } } @@ -127,7 +127,7 @@ impl FromStr for Uuid { #[inline] fn from_str(s: &str) -> Result<Uuid, Self::Err> { - Ok(Uuid(try!(s.parse()))) + s.parse().map(Uuid) } } diff --git a/contrib/lib/tests/compress_responder.rs b/contrib/lib/tests/compress_responder.rs @@ -5,13 +5,7 @@ extern crate rocket; #[cfg(all(feature = "brotli_compression", feature = "gzip_compression"))] -extern crate rocket_contrib; - -#[cfg(all(feature = "brotli_compression", feature = "gzip_compression"))] mod compress_responder_tests { - extern crate brotli; - extern crate flate2; - use rocket::http::hyper::header::{ContentEncoding, Encoding}; use rocket::http::Status; use rocket::http::{ContentType, Header}; @@ -22,7 +16,7 @@ mod compress_responder_tests { use std::io::Cursor; use std::io::Read; - use self::flate2::read::{GzDecoder, GzEncoder}; + use flate2::read::{GzDecoder, GzEncoder}; const HELLO: &str = r"This is a message to hello with more than 100 bytes \ in order to have to read more than one buffer when gzipping. こんにちは!"; diff --git a/contrib/lib/tests/compression_fairing.rs b/contrib/lib/tests/compression_fairing.rs @@ -5,13 +5,7 @@ extern crate rocket; #[cfg(all(feature = "brotli_compression", feature = "gzip_compression"))] -extern crate rocket_contrib; - -#[cfg(all(feature = "brotli_compression", feature = "gzip_compression"))] mod compression_fairing_tests { - extern crate brotli; - extern crate flate2; - use rocket::config::{Config, Environment}; use rocket::http::hyper::header::{ContentEncoding, Encoding}; use rocket::http::Status; @@ -23,7 +17,7 @@ mod compression_fairing_tests { use std::io::Cursor; use std::io::Read; - use self::flate2::read::{GzDecoder, GzEncoder}; + use flate2::read::{GzDecoder, GzEncoder}; const HELLO: &str = r"This is a message to hello with more than 100 bytes \ in order to have to read more than one buffer when gzipping. こんにちは!"; diff --git a/contrib/lib/tests/databases.rs b/contrib/lib/tests/databases.rs @@ -1,6 +1,3 @@ -extern crate rocket; -extern crate rocket_contrib; - #[cfg(all(feature = "diesel_sqlite_pool", feature = "diesel_postgres_pool"))] mod databases_tests { use rocket_contrib::databases::{database, diesel}; @@ -20,7 +17,7 @@ mod rusqlite_integration_test { use rocket_contrib::databases::rusqlite; use rocket_contrib::database; - use self::rusqlite::types::ToSql; + use rusqlite::types::ToSql; #[database("test_db")] struct SqliteDb(pub rusqlite::Connection); diff --git a/contrib/lib/tests/helmet.rs b/contrib/lib/tests/helmet.rs @@ -6,15 +6,11 @@ extern crate rocket; #[cfg(feature = "helmet")] mod helmet_tests { - extern crate time; - extern crate rocket_contrib; - - use rocket; use rocket::http::{Status, uri::Uri}; use rocket::local::{Client, LocalResponse}; - use self::rocket_contrib::helmet::*; - use self::time::Duration; + use rocket_contrib::helmet::*; + use time::Duration; #[get("/")] fn hello() { } @@ -47,7 +43,7 @@ mod helmet_tests { #[test] fn default_headers_test() { - dispatch!(SpaceHelmet::default(), |response: LocalResponse| { + dispatch!(SpaceHelmet::default(), |response: LocalResponse<'_>| { assert_header!(response, "X-XSS-Protection", "1"); assert_header!(response, "X-Frame-Options", "SAMEORIGIN"); assert_header!(response, "X-Content-Type-Options", "nosniff"); @@ -57,14 +53,14 @@ mod helmet_tests { #[test] fn disable_headers_test() { let helmet = SpaceHelmet::default().disable::<XssFilter>(); - dispatch!(helmet, |response: LocalResponse| { + dispatch!(helmet, |response: LocalResponse<'_>| { assert_header!(response, "X-Frame-Options", "SAMEORIGIN"); assert_header!(response, "X-Content-Type-Options", "nosniff"); assert_no_header!(response, "X-XSS-Protection"); }); let helmet = SpaceHelmet::default().disable::<Frame>(); - dispatch!(helmet, |response: LocalResponse| { + dispatch!(helmet, |response: LocalResponse<'_>| { assert_header!(response, "X-XSS-Protection", "1"); assert_header!(response, "X-Content-Type-Options", "nosniff"); assert_no_header!(response, "X-Frame-Options"); @@ -75,13 +71,13 @@ mod helmet_tests { .disable::<XssFilter>() .disable::<NoSniff>(); - dispatch!(helmet, |response: LocalResponse| { + dispatch!(helmet, |response: LocalResponse<'_>| { assert_no_header!(response, "X-Frame-Options"); assert_no_header!(response, "X-XSS-Protection"); assert_no_header!(response, "X-Content-Type-Options"); }); - dispatch!(SpaceHelmet::new(), |response: LocalResponse| { + dispatch!(SpaceHelmet::new(), |response: LocalResponse<'_>| { assert_no_header!(response, "X-Frame-Options"); assert_no_header!(response, "X-XSS-Protection"); assert_no_header!(response, "X-Content-Type-Options"); @@ -95,7 +91,7 @@ mod helmet_tests { .enable(ExpectCt::default()) .enable(Referrer::default()); - dispatch!(helmet, |response: LocalResponse| { + dispatch!(helmet, |response: LocalResponse<'_>| { assert_header!( response, "Strict-Transport-Security", @@ -123,7 +119,7 @@ mod helmet_tests { .enable(XssFilter::EnableReport(report_uri)) .enable(ExpectCt::ReportAndEnforce(Duration::seconds(30), enforce_uri)); - dispatch!(helmet, |response: LocalResponse| { + dispatch!(helmet, |response: LocalResponse<'_>| { assert_header!(response, "X-Frame-Options", "ALLOW-FROM https://www.google.com"); diff --git a/contrib/lib/tests/static_files.rs b/contrib/lib/tests/static_files.rs @@ -1,8 +1,5 @@ #![feature(proc_macro_hygiene, decl_macro)] -extern crate rocket; -extern crate rocket_contrib; - #[cfg(feature = "serve")] mod static_tests { use std::{io::Read, fs::File}; diff --git a/contrib/lib/tests/templates.rs b/contrib/lib/tests/templates.rs @@ -4,9 +4,6 @@ #[macro_use] extern crate rocket; #[cfg(feature = "templates")] -extern crate rocket_contrib; - -#[cfg(feature = "templates")] mod templates_tests { use std::path::{Path, PathBuf}; @@ -15,7 +12,7 @@ mod templates_tests { use rocket_contrib::templates::{Template, Metadata}; #[get("/<engine>/<name>")] - fn template_check(md: Metadata, engine: &RawStr, name: &RawStr) -> Option<()> { + fn template_check(md: Metadata<'_>, engine: &RawStr, name: &RawStr) -> Option<()> { match md.contains_template(&format!("{}/{}", engine, name)) { true => Some(()), false => None @@ -23,7 +20,7 @@ mod templates_tests { } #[get("/is_reloading")] - fn is_reloading(md: Metadata) -> Option<()> { + fn is_reloading(md: Metadata<'_>) -> Option<()> { if md.reloading() { Some(()) } else { None } } @@ -36,7 +33,7 @@ mod templates_tests { .extra("template_dir", template_root().to_str().expect("template directory")) .expect("valid configuration"); - ::rocket::custom(config).attach(Template::fairing()) + rocket::custom(config).attach(Template::fairing()) .mount("/", routes![template_check, is_reloading]) }