Skip to content

Commit d5992f1

Browse files
Simplify LimitedCrateDetails
1 parent 6d67225 commit d5992f1

File tree

2 files changed

+47
-51
lines changed

2 files changed

+47
-51
lines changed

src/web/rustdoc.rs

Lines changed: 40 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -380,45 +380,41 @@ pub(crate) async fn rustdoc_redirector_handler(
380380
/// small wrapper around CrateDetails to limit serialized fields we hand
381381
/// to the template.
382382
/// Mostly to know what we have to serialize into the etag.
383-
pub struct LimitedCrateDetails(CrateDetails);
383+
pub struct LimitedCrateDetails {
384+
parsed_license: Option<Vec<licenses::LicenseSegment>>,
385+
homepage_url: Option<String>,
386+
documentation_url: Option<String>,
387+
repository_url: Option<String>,
388+
owners: Vec<(String, String, OwnerKind)>,
389+
dependencies: Vec<Dependency>,
390+
total_items: Option<i32>,
391+
documented_items: Option<i32>,
392+
}
384393

385394
impl From<CrateDetails> for LimitedCrateDetails {
386395
fn from(value: CrateDetails) -> Self {
387-
Self(value)
388-
}
389-
}
390-
391-
impl LimitedCrateDetails {
392-
pub fn parsed_license(&self) -> Option<&[licenses::LicenseSegment]> {
393-
self.0.parsed_license.as_deref()
394-
}
395-
396-
pub fn homepage_url(&self) -> Option<&str> {
397-
self.0.homepage_url.as_deref()
398-
}
399-
400-
pub fn documentation_url(&self) -> Option<&str> {
401-
self.0.documentation_url.as_deref()
402-
}
403-
404-
pub fn repository_url(&self) -> Option<&str> {
405-
self.0.repository_url.as_deref()
406-
}
407-
408-
pub fn owners(&self) -> &[(String, String, OwnerKind)] {
409-
self.0.owners.as_ref()
410-
}
411-
412-
pub fn dependencies(&self) -> &[Dependency] {
413-
self.0.dependencies.as_ref()
414-
}
415-
416-
pub fn total_items(&self) -> Option<i32> {
417-
self.0.total_items
418-
}
419-
420-
pub fn documented_items(&self) -> Option<i32> {
421-
self.0.documented_items
396+
let CrateDetails {
397+
parsed_license,
398+
homepage_url,
399+
documentation_url,
400+
repository_url,
401+
owners,
402+
dependencies,
403+
total_items,
404+
documented_items,
405+
..
406+
} = value;
407+
408+
Self {
409+
total_items,
410+
documented_items,
411+
parsed_license,
412+
homepage_url,
413+
documentation_url,
414+
repository_url,
415+
owners,
416+
dependencies,
417+
}
422418
}
423419
}
424420

@@ -427,14 +423,14 @@ impl bincode::Encode for LimitedCrateDetails {
427423
&self,
428424
encoder: &mut E,
429425
) -> Result<(), bincode::error::EncodeError> {
430-
self.parsed_license().encode(encoder)?;
431-
self.homepage_url().encode(encoder)?;
432-
self.documentation_url().encode(encoder)?;
433-
self.repository_url().encode(encoder)?;
434-
self.owners().encode(encoder)?;
435-
self.dependencies().encode(encoder)?;
436-
self.total_items().encode(encoder)?;
437-
self.documented_items().encode(encoder)?;
426+
self.parsed_license.encode(encoder)?;
427+
self.homepage_url.encode(encoder)?;
428+
self.documentation_url.encode(encoder)?;
429+
self.repository_url.encode(encoder)?;
430+
self.owners.encode(encoder)?;
431+
self.dependencies.encode(encoder)?;
432+
self.total_items.encode(encoder)?;
433+
self.documented_items.encode(encoder)?;
438434
Ok(())
439435
}
440436
}

templates/rustdoc/topbar.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
</a>
4242
</li>
4343

44-
{%- if let Some(parsed_licenses) = krate.parsed_license() -%}
44+
{%- if let Some(parsed_licenses) = krate.parsed_license -%}
4545
<li class="pure-menu-item">
4646
<span class="pure-menu-link description">
4747
{{- crate::icons::IconScaleUnbalancedFlip.render_solid(false, false, "") }}
@@ -66,7 +66,7 @@
6666
<li class="pure-menu-heading">Links</li>
6767

6868
{# If the crate has a homepage, show a link to it #}
69-
{%- if let Some(homepage_url) = krate.homepage_url() -%}
69+
{%- if let Some(homepage_url) = krate.homepage_url -%}
7070
<li class="pure-menu-item">
7171
<a href="{{ homepage_url }}" class="pure-menu-link">
7272
{{ crate::icons::IconHouse.render_solid(false, false, "") }} Homepage
@@ -75,7 +75,7 @@
7575
{%- endif -%}
7676

7777
{# If the crate has external docs, show a link #}
78-
{%- if let Some(documentation_url) = krate.documentation_url() -%}
78+
{%- if let Some(documentation_url) = krate.documentation_url -%}
7979
<li class="pure-menu-item">
8080
<a href="{{ documentation_url }}" title="Canonical documentation" class="pure-menu-link">
8181
{{ crate::icons::IconFileLines.render_regular(false, false, "") }} Documentation
@@ -84,7 +84,7 @@
8484
{%- endif -%}
8585

8686
{# If the crate has a repo url, show it #}
87-
{%- if let Some(repository_url) = krate.repository_url() -%}
87+
{%- if let Some(repository_url) = krate.repository_url -%}
8888
<li class="pure-menu-item">
8989
<a href="{{ repository_url }}" class="pure-menu-link">
9090
{{ crate::icons::IconCodeBranch.render_solid(false, false, "") }} Repository
@@ -112,7 +112,7 @@
112112
<ul class="pure-menu-list" id="topbar-owners">
113113
<li class="pure-menu-heading">Owners</li>
114114

115-
{%- for owner in krate.owners() -%}
115+
{%- for owner in krate.owners -%}
116116
<li class="pure-menu-item">
117117
<a href="https://crates.io/{{ owner.2 }}s/{{ owner.0 }}" class="pure-menu-link">
118118
{{ crate::icons::IconUser.render_solid(false, false, "") }} {{ owner.0 }}
@@ -132,7 +132,7 @@
132132
<li class="pure-menu-item">
133133
<div class="pure-menu pure-menu-scrollable sub-menu" tabindex="-1">
134134
<ul class="pure-menu-list">
135-
{% call macros::dependencies_list(dependencies=krate.dependencies(), use_crate_details = false, if_empty="") %}
135+
{% call macros::dependencies_list(dependencies=krate.dependencies, use_crate_details = false, if_empty="") %}
136136
</ul>
137137
</div>
138138
</li>
@@ -151,7 +151,7 @@
151151
</ul>
152152
</div>
153153
</div>
154-
{%- if let (Some(documented), Some(total)) = (krate.documented_items(), krate.total_items()) -%}
154+
{%- if let (Some(documented), Some(total)) = (krate.documented_items, krate.total_items) -%}
155155
{% set documented = documented as f32 %}
156156
{% set total = total as f32 %}
157157
{% set percent = documented * 100f32 / total %}

0 commit comments

Comments
 (0)