mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-23 16:21:06 +01:00
chore: address clippy warnings
This commit is contained in:
parent
e4e4bb799c
commit
d7d9000b19
@ -511,11 +511,6 @@ mod tests {
|
|||||||
value: String,
|
value: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize)]
|
|
||||||
struct Id {
|
|
||||||
_id: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Deserialize)]
|
||||||
struct Test1(String, u32);
|
struct Test1(String, u32);
|
||||||
|
|
||||||
|
@ -2,11 +2,9 @@ use std::{future::Future, time::Instant};
|
|||||||
|
|
||||||
use actix_http::body::BoxBody;
|
use actix_http::body::BoxBody;
|
||||||
use actix_utils::future::{ready, Ready};
|
use actix_utils::future::{ready, Ready};
|
||||||
use actix_web::{
|
use actix_web::{http::StatusCode, test::TestRequest, Error, HttpRequest, HttpResponse, Responder};
|
||||||
error, http::StatusCode, test::TestRequest, Error, HttpRequest, HttpResponse, Responder,
|
|
||||||
};
|
|
||||||
use criterion::{criterion_group, criterion_main, Criterion};
|
use criterion::{criterion_group, criterion_main, Criterion};
|
||||||
use futures_util::future::{join_all, Either};
|
use futures_util::future::join_all;
|
||||||
|
|
||||||
// responder simulate the old responder trait.
|
// responder simulate the old responder trait.
|
||||||
trait FutureResponder {
|
trait FutureResponder {
|
||||||
@ -16,9 +14,6 @@ trait FutureResponder {
|
|||||||
fn future_respond_to(self, req: &HttpRequest) -> Self::Future;
|
fn future_respond_to(self, req: &HttpRequest) -> Self::Future;
|
||||||
}
|
}
|
||||||
|
|
||||||
// a simple option responder type.
|
|
||||||
struct OptionResponder<T>(Option<T>);
|
|
||||||
|
|
||||||
// a simple wrapper type around string
|
// a simple wrapper type around string
|
||||||
struct StringResponder(String);
|
struct StringResponder(String);
|
||||||
|
|
||||||
@ -34,22 +29,6 @@ impl FutureResponder for StringResponder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> FutureResponder for OptionResponder<T>
|
|
||||||
where
|
|
||||||
T: FutureResponder,
|
|
||||||
T::Future: Future<Output = Result<HttpResponse, Error>>,
|
|
||||||
{
|
|
||||||
type Error = Error;
|
|
||||||
type Future = Either<T::Future, Ready<Result<HttpResponse, Self::Error>>>;
|
|
||||||
|
|
||||||
fn future_respond_to(self, req: &HttpRequest) -> Self::Future {
|
|
||||||
match self.0 {
|
|
||||||
Some(t) => Either::Left(t.future_respond_to(req)),
|
|
||||||
None => Either::Right(ready(Err(error::ErrorInternalServerError("err")))),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Responder for StringResponder {
|
impl Responder for StringResponder {
|
||||||
type Body = BoxBody;
|
type Body = BoxBody;
|
||||||
|
|
||||||
@ -60,17 +39,6 @@ impl Responder for StringResponder {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Responder> Responder for OptionResponder<T> {
|
|
||||||
type Body = BoxBody;
|
|
||||||
|
|
||||||
fn respond_to(self, req: &HttpRequest) -> HttpResponse<Self::Body> {
|
|
||||||
match self.0 {
|
|
||||||
Some(t) => t.respond_to(req).map_into_boxed_body(),
|
|
||||||
None => HttpResponse::from_error(error::ErrorInternalServerError("err")),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn future_responder(c: &mut Criterion) {
|
fn future_responder(c: &mut Criterion) {
|
||||||
let rt = actix_rt::System::new();
|
let rt = actix_rt::System::new();
|
||||||
let req = TestRequest::default().to_http_request();
|
let req = TestRequest::default().to_http_request();
|
||||||
|
@ -19,7 +19,7 @@ use crate::{
|
|||||||
/// 1. It is an async function (or a function/closure that returns an appropriate future);
|
/// 1. It is an async function (or a function/closure that returns an appropriate future);
|
||||||
/// 1. The function parameters (up to 12) implement [`FromRequest`];
|
/// 1. The function parameters (up to 12) implement [`FromRequest`];
|
||||||
/// 1. The async function (or future) resolves to a type that can be converted into an
|
/// 1. The async function (or future) resolves to a type that can be converted into an
|
||||||
/// [`HttpResponse`] (i.e., it implements the [`Responder`] trait).
|
/// [`HttpResponse`] (i.e., it implements the [`Responder`] trait).
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
/// # Compiler Errors
|
/// # Compiler Errors
|
||||||
|
@ -493,7 +493,7 @@ impl Header for ContentDisposition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse<T: crate::HttpMessage>(msg: &T) -> Result<Self, crate::error::ParseError> {
|
fn parse<T: crate::HttpMessage>(msg: &T) -> Result<Self, crate::error::ParseError> {
|
||||||
if let Some(h) = msg.headers().get(&Self::name()) {
|
if let Some(h) = msg.headers().get(Self::name()) {
|
||||||
Self::from_raw(h)
|
Self::from_raw(h)
|
||||||
} else {
|
} else {
|
||||||
Err(crate::error::ParseError::Header)
|
Err(crate::error::ParseError::Header)
|
||||||
|
@ -107,16 +107,16 @@ impl ByteRangeSpec {
|
|||||||
/// satisfiable if they meet the following conditions:
|
/// satisfiable if they meet the following conditions:
|
||||||
///
|
///
|
||||||
/// > If a valid byte-range-set includes at least one byte-range-spec with a first-byte-pos that
|
/// > If a valid byte-range-set includes at least one byte-range-spec with a first-byte-pos that
|
||||||
/// is less than the current length of the representation, or at least one
|
/// > is less than the current length of the representation, or at least one
|
||||||
/// suffix-byte-range-spec with a non-zero suffix-length, then the byte-range-set
|
/// > suffix-byte-range-spec with a non-zero suffix-length, then the byte-range-set is
|
||||||
/// is satisfiable. Otherwise, the byte-range-set is unsatisfiable.
|
/// > satisfiable. Otherwise, the byte-range-set is unsatisfiable.
|
||||||
///
|
///
|
||||||
/// The function also computes remainder ranges based on the RFC:
|
/// The function also computes remainder ranges based on the RFC:
|
||||||
///
|
///
|
||||||
/// > If the last-byte-pos value is absent, or if the value is greater than or equal to the
|
/// > If the last-byte-pos value is absent, or if the value is greater than or equal to the
|
||||||
/// current length of the representation data, the byte range is interpreted as the remainder
|
/// > current length of the representation data, the byte range is interpreted as the remainder
|
||||||
/// of the representation (i.e., the server replaces the value of last-byte-pos with a value
|
/// > of the representation (i.e., the server replaces the value of last-byte-pos with a value
|
||||||
/// that is one less than the current length of the selected representation).
|
/// > that is one less than the current length of the selected representation).
|
||||||
///
|
///
|
||||||
/// [RFC 7233 §2.1]: https://datatracker.ietf.org/doc/html/rfc7233
|
/// [RFC 7233 §2.1]: https://datatracker.ietf.org/doc/html/rfc7233
|
||||||
pub fn to_satisfiable_range(&self, full_length: u64) -> Option<(u64, u64)> {
|
pub fn to_satisfiable_range(&self, full_length: u64) -> Option<(u64, u64)> {
|
||||||
@ -270,7 +270,7 @@ impl Header for Range {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError> {
|
fn parse<T: HttpMessage>(msg: &T) -> Result<Self, ParseError> {
|
||||||
header::from_one_raw_str(msg.headers().get(&Self::name()))
|
header::from_one_raw_str(msg.headers().get(Self::name()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,11 +622,7 @@ impl FormatText {
|
|||||||
|
|
||||||
FormatText::ResponseHeader(ref name) => {
|
FormatText::ResponseHeader(ref name) => {
|
||||||
let s = if let Some(val) = res.headers().get(name) {
|
let s = if let Some(val) = res.headers().get(name) {
|
||||||
if let Ok(s) = val.to_str() {
|
val.to_str().unwrap_or("-")
|
||||||
s
|
|
||||||
} else {
|
|
||||||
"-"
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
"-"
|
"-"
|
||||||
};
|
};
|
||||||
@ -670,11 +666,7 @@ impl FormatText {
|
|||||||
FormatText::RequestTime => *self = FormatText::Str(now.format(&Rfc3339).unwrap()),
|
FormatText::RequestTime => *self = FormatText::Str(now.format(&Rfc3339).unwrap()),
|
||||||
FormatText::RequestHeader(ref name) => {
|
FormatText::RequestHeader(ref name) => {
|
||||||
let s = if let Some(val) = req.headers().get(name) {
|
let s = if let Some(val) = req.headers().get(name) {
|
||||||
if let Ok(s) = val.to_str() {
|
val.to_str().unwrap_or("-")
|
||||||
s
|
|
||||||
} else {
|
|
||||||
"-"
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
"-"
|
"-"
|
||||||
};
|
};
|
||||||
|
@ -463,7 +463,7 @@ mod tests {
|
|||||||
// content type override
|
// content type override
|
||||||
let res = HttpResponse::Ok()
|
let res = HttpResponse::Ok()
|
||||||
.insert_header((CONTENT_TYPE, "text/json"))
|
.insert_header((CONTENT_TYPE, "text/json"))
|
||||||
.json(&vec!["v1", "v2", "v3"]);
|
.json(["v1", "v2", "v3"]);
|
||||||
let ct = res.headers().get(CONTENT_TYPE).unwrap();
|
let ct = res.headers().get(CONTENT_TYPE).unwrap();
|
||||||
assert_eq!(ct, HeaderValue::from_static("text/json"));
|
assert_eq!(ct, HeaderValue::from_static("text/json"));
|
||||||
assert_body_eq!(res, br#"["v1","v2","v3"]"#);
|
assert_body_eq!(res, br#"["v1","v2","v3"]"#);
|
||||||
|
Loading…
Reference in New Issue
Block a user