blob: 10bcb75349acaf1b6cb0dbacf28c24c3a959afa5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
@use crate::templates::base;
@use crate::reverse_dependencies::CratePageRevDeps;
@use crate::Urler;
@(url: &Urler, p: &CratePageRevDeps)
@:base(&p.page(), {
<header id="rev-deps" @if p.ver.is_yanked() {class="yanked"} else {@if p.ver.is_nightly() {class="nightly"}}>
<div class="inner-col">
<div class="breadcrumbs">
<a href="/"><span>Lib</span>.rs</a> ›
<h1>
<a href="@url.krate(&p.ver)" rel="up">@p.ver.capitalized_name()</a>
</h1>
› Reverse dependencies
</div>
</div>
</header>
<main>
<div class="inner-col">
@if let Some(stats) = p.stats {
<p>
@if stats.runtime.all() > 0 {
<a href="@url.krate(&p.ver)" rel="up">@p.ver.capitalized_name()</a> is used at run time in <b>@p.format_number(stats.runtime.all())</b> crate@if stats.runtime.all() != 1 {s}@if stats.runtime.all() > u32::from(stats.direct.runtime) {
(@if stats.runtime.opt > 0 {of which @p.format_number(stats.runtime.opt) optionally, }@p.format_number(stats.direct.runtime) directly)}.
}
@if stats.build.all() > 0 {
It's used at build time in <b>@p.format_number(stats.build.all())</b> crate@if stats.build.all() != 1 {s}@if stats.build.all() > u32::from(stats.direct.build) {
(@if stats.build.opt > 0 {of which @p.format_number(stats.build.opt) optionally, }@p.format_number(stats.direct.build) directly)}.
}
@if stats.dev > 0 {
It's used only as a dev dependency in <b>@p.format_number(stats.dev)</b> crate@if stats.dev != 1 {s}@if stats.dev > stats.direct.dev && stats.direct.dev > 0 {
(@p.format_number(stats.direct.dev) directly)}.
}
</p>
@if stats.versions.len() > 1 {
<table class="version-pop">
<thead><th>Number of dependers</th><th>@p.ver.capitalized_name() version</th><th>Downloads/month</th></thead>
@for x in p.version_breakdown() {
<tr>
<td class="rv">@if x.num == 0 || x.perc <= x.num_width {@x.num_str} @if x.num > 0 {<span style="width:@x.perc%">@if x.perc > x.num_width {@x.num_str}</span>}</td>
<th>@x.ver</th>
<td class="dl">
@if x.dl > 0 {
<span style="width:@x.dl_perc%">@if x.dl_perc > x.dl_num_width {@x.dl_str.0<b>@x.dl_str.1</b>}</span>
}
@if x.dl == 0 || x.dl_perc <= x.dl_num_width {@x.dl_str.0<b>@x.dl_str.1</b>}
</td>
}
</table>
}
}
@if !p.deps.is_empty() {
<table class="reverse-deps @if !p.has_download_columns {no-dl-columns}">
<thead>
<tr><th colspan="3">Depender
@if p.has_download_columns {<small>(with downloads and own rev deps)</small>}
</th> <th colspan="2">@p.ver.capitalized_name() version</th></tr>
</thead>
@for r in &p.deps {
<tr>
<td>@if r.downloads > 100 {
<span class=downloads>@if let Some((num,unit)) = Some(p.downloads(r.downloads)) {@num<b>@unit</b>}</span>
}</td>
<td>@if r.rev_dep_count > 0 {
@if let Some(link) = url.reverse_deps(&r.origin) {<a href="@link">@r.rev_dep_count</a>}}</td>
<td><a href="@url.crate_by_origin(&r.origin)">@r.depender.name()</a></td>
<td>@if r.is_optional {<span class=feature>optional</span>}
@if r.kind != "normal" && r.kind != "" {<span class="label label-@r.kind">@r.kind</span>}</td>
<td @if !r.matches_latest {class="outdated"}>@r.req</td>
</tr>
}
</table>
} else {
<p>This crate isn't used by any other public crates. <a href="@url.krate(&p.ver)" rel="up">Go back to @p.ver.capitalized_name()</a>.</p>
}
</div>
</main>
<footer>
<div class="inner-col">
<p><a href="/revdeps">How this data is computed</a>. Back to <a href="@url.krate(&p.ver)" rel="up">@p.ver.capitalized_name()</a>.</p>
</div>
</footer>
})
|