From 76ba5be0473a22ea6aa4d38efd6557644af79952 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Thu, 11 Jul 2024 22:02:03 +0200 Subject: [PATCH] Remove unneeded `derive(Serialize)` --- src/web/build_details.rs | 6 +++--- src/web/builds.rs | 8 +++----- src/web/crate_details.rs | 29 ++++++++--------------------- src/web/features.rs | 3 +-- src/web/mod.rs | 7 +++---- src/web/releases.rs | 14 ++++++-------- src/web/routes.rs | 2 +- src/web/rustdoc.rs | 14 ++------------ src/web/sitemap.rs | 9 ++++----- src/web/source.rs | 10 ++++------ 10 files changed, 35 insertions(+), 67 deletions(-) diff --git a/src/web/build_details.rs b/src/web/build_details.rs index bccf86a7f..4bfbe5718 100644 --- a/src/web/build_details.rs +++ b/src/web/build_details.rs @@ -16,10 +16,10 @@ use chrono::{DateTime, Utc}; use futures_util::TryStreamExt; use rinja::Template; use semver::Version; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use std::sync::Arc; -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] pub(crate) struct BuildDetails { id: i32, rustc_version: Option, @@ -32,7 +32,7 @@ pub(crate) struct BuildDetails { #[derive(Template)] #[template(path = "crate/build_details.html")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct BuildDetailsPage { metadata: MetaData, build_details: BuildDetails, diff --git a/src/web/builds.rs b/src/web/builds.rs index 13744259f..e1b7d7bc4 100644 --- a/src/web/builds.rs +++ b/src/web/builds.rs @@ -29,11 +29,9 @@ use constant_time_eq::constant_time_eq; use http::StatusCode; use rinja::Template; use semver::Version; -use serde::Serialize; -use serde_json::json; use std::sync::Arc; -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] pub(crate) struct Build { id: i32, rustc_version: Option, @@ -45,7 +43,7 @@ pub(crate) struct Build { #[derive(Template)] #[template(path = "crate/builds.html")] -#[derive(Debug, Clone, Serialize)] +#[derive(Debug, Clone)] struct BuildsPage { metadata: MetaData, builds: Vec, @@ -235,7 +233,7 @@ pub(crate) async fn build_trigger_rebuild_handler( .await .map_err(|e| JsonAxumNope(e.into()))?; - Ok((StatusCode::CREATED, Json(json!({})))) + Ok((StatusCode::CREATED, Json(serde_json::json!({})))) } async fn get_builds( diff --git a/src/web/crate_details.rs b/src/web/crate_details.rs index d2957b7bb..207977359 100644 --- a/src/web/crate_details.rs +++ b/src/web/crate_details.rs @@ -1,4 +1,4 @@ -use super::{markdown, match_version, MetaData}; +use super::{match_version, MetaData}; use crate::registry_api::OwnerKind; use crate::utils::{get_correct_docsrs_style_file, report_error}; use crate::web::rustdoc::RustdocHtmlParams; @@ -27,22 +27,19 @@ use log::warn; use rinja::Template; use semver::Version; use serde::Deserialize; -use serde::{ser::Serializer, Serialize}; use serde_json::Value; use std::sync::Arc; // TODO: Add target name and versions -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] pub(crate) struct CrateDetails { pub(crate) name: String, pub(crate) version: Version, pub(crate) description: Option, pub(crate) owners: Vec<(String, String, OwnerKind)>, pub(crate) dependencies: Option, - #[serde(serialize_with = "optional_markdown")] readme: Option, - #[serde(serialize_with = "optional_markdown")] rustdoc: Option, // this is description_long in database release_time: Option>, build_status: BuildStatus, @@ -71,7 +68,7 @@ pub(crate) struct CrateDetails { pub(crate) release_id: i32, } -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct RepositoryMetadata { stars: i32, forks: i32, @@ -79,17 +76,7 @@ struct RepositoryMetadata { name: Option, } -fn optional_markdown(markdown: &Option, serializer: S) -> Result -where - S: Serializer, -{ - markdown - .as_ref() - .map(|markdown| markdown::render(markdown)) - .serialize(serializer) -} - -#[derive(Debug, Clone, Eq, PartialEq, Serialize)] +#[derive(Debug, Clone, Eq, PartialEq)] pub(crate) struct Release { pub id: i32, pub version: semver::Version, @@ -425,7 +412,7 @@ pub(crate) async fn releases_for_crate( #[derive(Template)] #[template(path = "crate/details.html")] -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct CrateDetailsPage { details: CrateDetails, csp_nonce: String, @@ -507,7 +494,7 @@ pub(crate) async fn crate_details_handler( #[derive(Template)] #[template(path = "rustdoc/releases.html")] -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct ReleaseList { releases: Vec, crate_name: String, @@ -600,7 +587,7 @@ pub(crate) async fn get_all_releases( Ok(res.into_response()) } -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct ShortMetadata { name: String, version: Version, @@ -617,7 +604,7 @@ impl ShortMetadata { #[derive(Template)] #[template(path = "rustdoc/platforms.html")] -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct PlatformList { metadata: ShortMetadata, inner_path: String, diff --git a/src/web/features.rs b/src/web/features.rs index 673f95a35..8794135a0 100644 --- a/src/web/features.rs +++ b/src/web/features.rs @@ -14,14 +14,13 @@ use crate::{ use anyhow::anyhow; use axum::response::IntoResponse; use rinja::Template; -use serde::Serialize; use std::collections::{HashMap, VecDeque}; const DEFAULT_NAME: &str = "default"; #[derive(Template)] #[template(path = "crate/features.html")] -#[derive(Debug, Clone, Serialize)] +#[derive(Debug, Clone)] struct FeaturesPage { metadata: MetaData, features: Option>, diff --git a/src/web/mod.rs b/src/web/mod.rs index 3adb96245..b0cc58de6 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -49,7 +49,6 @@ use error::AxumNope; use page::TemplateData; use percent_encoding::{utf8_percent_encode, AsciiSet, CONTROLS}; use semver::{Version, VersionReq}; -use serde::Serialize; use serde_with::{DeserializeFromStr, SerializeDisplay}; use std::{ borrow::{Borrow, Cow}, @@ -618,7 +617,8 @@ where } /// MetaData used in header -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] +#[cfg_attr(test, derive(serde::Serialize))] pub(crate) struct MetaData { pub(crate) name: String, /// The exact version of the release being shown. @@ -721,13 +721,12 @@ impl MetaData { #[derive(Template)] #[template(path = "error.html")] -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] pub(crate) struct AxumErrorPage { /// The title of the page pub title: &'static str, /// The error message, displayed as a description pub message: Cow<'static, str>, - #[serde(skip)] pub status: StatusCode, pub csp_nonce: String, } diff --git a/src/web/releases.rs b/src/web/releases.rs index 818906abc..477a05c80 100644 --- a/src/web/releases.rs +++ b/src/web/releases.rs @@ -301,7 +301,7 @@ async fn get_search_results( #[derive(Template)] #[template(path = "core/home.html")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct HomePage { recent_releases: Vec, csp_nonce: String, @@ -330,7 +330,7 @@ pub(crate) async fn home_page(mut conn: DbConnection) -> AxumResult, csp_nonce: String, @@ -352,7 +352,7 @@ pub(crate) async fn releases_feed_handler(mut conn: DbConnection) -> AxumResult< #[derive(Template)] #[template(path = "releases/releases.html")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct ViewReleases { releases: Vec, description: String, @@ -372,8 +372,7 @@ impl ViewReleases { } } -#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize)] -#[serde(rename_all = "kebab-case")] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] pub(crate) enum ReleaseType { Recent, Stars, @@ -496,7 +495,7 @@ pub(crate) async fn owner_handler(Path(owner): Path) -> AxumResult, @@ -506,7 +505,6 @@ pub(super) struct Search { pub(super) next_page_link: Option, /// This should always be `ReleaseType::Search` pub(super) release_type: ReleaseType, - #[serde(skip)] pub(super) status: http::StatusCode, pub(super) csp_nonce: String, } @@ -732,7 +730,7 @@ pub(crate) async fn search_handler( #[derive(Template)] #[template(path = "releases/activity.html")] -#[derive(Debug, Clone, PartialEq, Serialize)] +#[derive(Debug, Clone, PartialEq)] struct ReleaseActivity { description: &'static str, dates: Vec, diff --git a/src/web/routes.rs b/src/web/routes.rs index e52f7fc4e..7b2517d13 100644 --- a/src/web/routes.rs +++ b/src/web/routes.rs @@ -290,7 +290,7 @@ pub(super) fn build_axum_routes() -> AxumRouter { get_internal(|| async { #[derive(Template)] #[template(path = "storage-change-detection.html")] - #[derive(Debug, Clone, serde::Serialize)] + #[derive(Debug, Clone)] struct StorageChangeDetection { csp_nonce: String, } diff --git a/src/web/rustdoc.rs b/src/web/rustdoc.rs index cc46c6b38..bb3d99c1a 100644 --- a/src/web/rustdoc.rs +++ b/src/web/rustdoc.rs @@ -28,7 +28,7 @@ use axum::{ use lol_html::errors::RewritingError; use once_cell::sync::Lazy; use semver::Version; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use std::{ collections::{BTreeMap, HashMap}, sync::Arc, @@ -257,12 +257,10 @@ pub(crate) async fn rustdoc_redirector_handler( } } -#[derive(Debug, Clone, Serialize)] +#[derive(Debug, Clone)] pub struct RustdocPage { pub latest_path: String, pub permalink_path: String, - pub latest_version: String, - pub target: String, pub inner_path: String, // true if we are displaying the latest version of the crate, regardless // of whether the URL specifies a version number or the string "latest." @@ -604,12 +602,6 @@ pub(crate) async fn rustdoc_html_server_handler( .recently_accessed_releases .record(krate.crate_id, krate.release_id, target); - let target = if target.is_empty() { - String::new() - } else { - format!("{target}/") - }; - // Build the page of documentation, templates .render_in_threadpool({ @@ -619,8 +611,6 @@ pub(crate) async fn rustdoc_html_server_handler( Ok(RustdocPage { latest_path, permalink_path, - latest_version: latest_version.to_string(), - target, inner_path, is_latest_version, is_latest_url: params.version.is_latest(), diff --git a/src/web/sitemap.rs b/src/web/sitemap.rs index 650ac82ae..614521e72 100644 --- a/src/web/sitemap.rs +++ b/src/web/sitemap.rs @@ -15,13 +15,12 @@ use axum::{extract::Extension, http::StatusCode, response::IntoResponse}; use chrono::{TimeZone, Utc}; use futures_util::stream::TryStreamExt; use rinja::Template; -use serde::Serialize; use std::sync::Arc; /// sitemap index #[derive(Template)] #[template(path = "core/sitemapindex.xml")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct SitemapIndexXml { sitemaps: Vec, csp_nonce: String, @@ -41,7 +40,7 @@ pub(crate) async fn sitemapindex_handler() -> impl IntoResponse { } } -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct SitemapRow { crate_name: String, last_modified: String, @@ -51,7 +50,7 @@ struct SitemapRow { /// The sitemap #[derive(Template)] #[template(path = "core/sitemap.xml")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct SitemapXml { releases: Vec, csp_nonce: String, @@ -112,7 +111,7 @@ pub(crate) async fn sitemap_handler( #[derive(Template)] #[template(path = "core/about/builds.html")] -#[derive(Debug, Clone, PartialEq, Eq, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq)] struct AboutBuilds { /// The current version of rustc that docs.rs is using to build crates rustc_version: Option, diff --git a/src/web/source.rs b/src/web/source.rs index b5cf3a9cc..c1cbb55f3 100644 --- a/src/web/source.rs +++ b/src/web/source.rs @@ -14,12 +14,12 @@ use axum::{response::IntoResponse, Extension}; use axum_extra::headers::HeaderMapExt; use rinja::Template; use semver::Version; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use std::{cmp::Ordering, sync::Arc}; use tracing::instrument; /// A source file's name and mime type -#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Serialize)] +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd)] struct File { /// The name of the file name: String, @@ -43,7 +43,7 @@ impl File { } /// A list of source files -#[derive(Debug, Clone, PartialEq, Serialize, Default)] +#[derive(Debug, Clone, PartialEq, Default)] struct FileList { files: Vec, } @@ -145,7 +145,7 @@ impl FileList { #[derive(Template)] #[template(path = "crate/source.html")] -#[derive(Debug, Clone, Serialize)] +#[derive(Debug, Clone)] struct SourcePage { file_list: FileList, metadata: MetaData, @@ -155,7 +155,6 @@ struct SourcePage { canonical_url: CanonicalUrl, is_file_too_large: bool, is_latest_url: bool, - use_direct_platform_links: bool, csp_nonce: String, } @@ -340,7 +339,6 @@ pub(crate) async fn source_browser_handler( canonical_url, is_file_too_large, is_latest_url: params.version.is_latest(), - use_direct_platform_links: true, csp_nonce: String::new(), } .into_response())