1
0
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:
Rob Ede 2024-08-07 04:06:18 +01:00
parent e4e4bb799c
commit d7d9000b19
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
7 changed files with 14 additions and 59 deletions

View File

@ -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);

View File

@ -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();

View File

@ -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

View File

@ -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)

View File

@ -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()))
} }
} }

View File

@ -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 {
"-" "-"
}; };

View File

@ -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"]"#);