Skip to content

Commit b7afc73

Browse files
KixironJoshua Nelson
authored and
Joshua Nelson
committed
Rebased with master and followed a few clippy lints
1 parent 58a0d53 commit b7afc73

File tree

15 files changed

+162
-135
lines changed

15 files changed

+162
-135
lines changed

src/db/add_package.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,16 @@ fn initialize_package_in_database(conn: &Connection, pkg: &MetadataPackage) -> R
185185

186186
/// Convert dependencies into Vec<(String, String, String)>
187187
fn convert_dependencies(pkg: &MetadataPackage) -> Vec<(String, String, String)> {
188-
let mut dependencies: Vec<(String, String, String)> = Vec::new();
188+
let mut dependencies: Vec<(String, String, String)> =
189+
Vec::with_capacity(pkg.dependencies.len());
190+
189191
for dependency in &pkg.dependencies {
190192
let name = dependency.name.clone();
191193
let version = dependency.req.clone();
192194
let kind = dependency.kind.clone().unwrap_or_else(|| "normal".into());
193195
dependencies.push((name, version, kind.to_string()));
194196
}
197+
195198
dependencies
196199
}
197200

src/db/blacklist.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ mod tests {
8383
crate::test::wrapper(|env| {
8484
let db = env.db();
8585

86-
assert!(is_blacklisted(&db.conn(), "crate foo")? == false);
86+
assert!(!is_blacklisted(&db.conn(), "crate foo")?);
8787
add_crate(&db.conn(), "crate foo")?;
88-
assert!(is_blacklisted(&db.conn(), "crate foo")? == true);
88+
assert!(is_blacklisted(&db.conn(), "crate foo")?);
8989
remove_crate(&db.conn(), "crate foo")?;
90-
assert!(is_blacklisted(&db.conn(), "crate foo")? == false);
90+
assert!(!is_blacklisted(&db.conn(), "crate foo")?);
9191
Ok(())
9292
});
9393
}

src/db/file.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,15 @@ pub fn add_path_into_database<P: AsRef<Path>>(
3737
}
3838

3939
fn file_list_to_json(file_list: Vec<(PathBuf, String)>) -> Result<Value> {
40-
let mut file_list_json: Vec<Value> = Vec::new();
41-
42-
for file in file_list {
43-
let mut v = Vec::with_capacity(2);
44-
v.push(Value::String(file.1));
45-
v.push(Value::String(
46-
file.0.into_os_string().into_string().unwrap(),
47-
));
48-
49-
file_list_json.push(Value::Array(v));
50-
}
51-
52-
Ok(Value::Array(file_list_json))
40+
let file_list: Vec<_> = file_list
41+
.into_iter()
42+
.map(|(path, name)| {
43+
Value::Array(vec![
44+
Value::String(name),
45+
Value::String(path.into_os_string().into_string().unwrap()),
46+
])
47+
})
48+
.collect();
49+
50+
Ok(Value::Array(file_list))
5351
}

src/docbuilder/crates.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ where
1212
let reader = fs::File::open(path).map(BufReader::new)?;
1313

1414
let mut name = String::new();
15-
let mut versions = Vec::new();
15+
let mut versions = Vec::new(); // TODO: Find a way to pre-allocate the versions vector
1616

1717
for line in reader.lines() {
1818
// some crates have invalid UTF-8 (nanny-sys-0.0.7)

src/docbuilder/limits.rs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ fn scale(value: usize, interval: usize, labels: &[&str]) -> String {
119119
mod test {
120120
use super::*;
121121
use crate::test::*;
122+
122123
#[test]
123124
fn retrieve_limits() {
124125
wrapper(|env| {
@@ -151,40 +152,41 @@ mod test {
151152
targets: 1,
152153
..Limits::default()
153154
};
154-
db.conn().query("INSERT INTO sandbox_overrides (crate_name, max_memory_bytes, timeout_seconds, max_targets)
155-
VALUES ($1, $2, $3, $4)",
156-
&[&krate, &(limits.memory as i64), &(limits.timeout.as_secs() as i32), &(limits.targets as i32)])?;
155+
db.conn().query(
156+
"INSERT INTO sandbox_overrides (crate_name, max_memory_bytes, timeout_seconds, max_targets)
157+
VALUES ($1, $2, $3, $4)",
158+
&[&krate, &(limits.memory as i64), &(limits.timeout.as_secs() as i32), &(limits.targets as i32)]
159+
)?;
157160
assert_eq!(limits, Limits::for_crate(&db.conn(), krate)?);
158161
Ok(())
159162
});
160163
}
164+
161165
#[test]
162166
fn display_limits() {
163167
let limits = Limits {
164-
memory: 102400,
168+
memory: 102_400,
165169
timeout: Duration::from_secs(300),
166170
targets: 1,
167171
..Limits::default()
168172
};
169173
let display = limits.for_website();
174+
assert_eq!(display.get("Network access"), Some(&"blocked".into()));
170175
assert_eq!(
171-
display.get("Network access".into()),
172-
Some(&"blocked".into())
173-
);
174-
assert_eq!(
175-
display.get("Maximum size of a build log".into()),
176+
display.get("Maximum size of a build log"),
176177
Some(&"100 KB".into())
177178
);
178179
assert_eq!(
179-
display.get("Maximum number of build targets".into()),
180+
display.get("Maximum number of build targets"),
180181
Some(&limits.targets.to_string())
181182
);
182183
assert_eq!(
183-
display.get("Maximum rustdoc execution time".into()),
184+
display.get("Maximum rustdoc execution time"),
184185
Some(&"5 minutes".into())
185186
);
186-
assert_eq!(display.get("Available RAM".into()), Some(&"100 KB".into()));
187+
assert_eq!(display.get("Available RAM"), Some(&"100 KB".into()));
187188
}
189+
188190
#[test]
189191
fn scale_limits() {
190192
// time
@@ -197,18 +199,18 @@ mod test {
197199
assert_eq!(SIZE_SCALE(100), "100 bytes");
198200
assert_eq!(SIZE_SCALE(1024), "1 KB");
199201
assert_eq!(SIZE_SCALE(10240), "10 KB");
200-
assert_eq!(SIZE_SCALE(1048576), "1 MB");
201-
assert_eq!(SIZE_SCALE(10485760), "10 MB");
202-
assert_eq!(SIZE_SCALE(1073741824), "1 GB");
203-
assert_eq!(SIZE_SCALE(10737418240), "10 GB");
202+
assert_eq!(SIZE_SCALE(1_048_576), "1 MB");
203+
assert_eq!(SIZE_SCALE(10_485_760), "10 MB");
204+
assert_eq!(SIZE_SCALE(1_073_741_824), "1 GB");
205+
assert_eq!(SIZE_SCALE(10_737_418_240), "10 GB");
204206
assert_eq!(SIZE_SCALE(std::u32::MAX as usize), "4 GB");
205207

206208
// fractional sizes
207209
assert_eq!(TIME_SCALE(90), "1.5 minutes");
208210
assert_eq!(TIME_SCALE(5400), "1.5 hours");
209211

210-
assert_eq!(SIZE_SCALE(1288490189), "1.2 GB");
211-
assert_eq!(SIZE_SCALE(3758096384), "3.5 GB");
212-
assert_eq!(SIZE_SCALE(1048051712), "999.5 MB");
212+
assert_eq!(SIZE_SCALE(1_288_490_189), "1.2 GB");
213+
assert_eq!(SIZE_SCALE(3_758_096_384), "3.5 GB");
214+
assert_eq!(SIZE_SCALE(1_048_051_712), "999.5 MB");
213215
}
214216
}

src/docbuilder/metadata.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ mod test {
234234
let metadata = Metadata::from_str(manifest);
235235

236236
assert!(metadata.features.is_some());
237-
assert!(metadata.all_features == true);
238-
assert!(metadata.no_default_features == true);
237+
assert!(metadata.all_features);
238+
assert!(metadata.no_default_features);
239239
assert!(metadata.default_target.is_some());
240240
assert!(metadata.rustdoc_args.is_some());
241241

src/utils/github_updater.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ mod test {
185185
assert!(fields.is_ok());
186186

187187
let fields = fields.unwrap();
188-
assert!(fields.description != "".to_string());
188+
assert!(fields.description != "");
189189
assert!(fields.stars >= 0);
190190
assert!(fields.forks >= 0);
191191
assert!(fields.issues >= 0);

src/utils/pubsubhubbub.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::collections::HashMap;
33
use reqwest::*;
44

55
fn ping_hub(url: &str) -> Result<Response> {
6-
let mut params = HashMap::new();
6+
let mut params = HashMap::with_capacity(2);
77
params.insert("hub.mode", "publish");
88
params.insert("hub.url", "https://docs.rs/releases/feed");
99
let client = Client::new();

src/web/builds.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,7 @@ pub fn build_list_handler(req: &mut Request) -> IronResult<Response> {
7070
let conn = extension!(req, Pool).get()?;
7171
let limits = ctry!(Limits::for_crate(&conn, name));
7272

73-
let mut build_list: Vec<Build> = Vec::new();
74-
let mut build_details = None;
75-
76-
// FIXME: getting builds.output may cause performance issues when release have tons of builds
77-
for row in &ctry!(conn.query(
73+
let query = ctry!(conn.query(
7874
"SELECT crates.name,
7975
releases.version,
8076
releases.description,
@@ -92,7 +88,13 @@ pub fn build_list_handler(req: &mut Request) -> IronResult<Response> {
9288
WHERE crates.name = $1 AND releases.version = $2
9389
ORDER BY id DESC",
9490
&[&name, &version]
95-
)) {
91+
));
92+
93+
let mut build_list: Vec<Build> = Vec::with_capacity(query.len());
94+
let mut build_details = None;
95+
96+
// FIXME: getting builds.output may cause performance issues when release have tons of builds
97+
for row in query.iter() {
9698
let id: i32 = row.get(5);
9799

98100
let build = Build {

src/web/crate_details.rs

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -157,25 +157,31 @@ impl CrateDetails {
157157

158158
// sort versions with semver
159159
let releases = {
160-
let mut versions: Vec<semver::Version> = Vec::new();
161160
let versions_from_db: Value = rows.get(0).get(17);
162161

163-
if let Some(vers) = versions_from_db.as_array() {
164-
for version in vers {
165-
if let Some(version) = version.as_str() {
166-
if let Ok(sem_ver) = semver::Version::parse(&version) {
167-
versions.push(sem_ver);
162+
if let Some(versions_from_db) = versions_from_db.as_array() {
163+
let mut versions: Vec<semver::Version> = versions_from_db
164+
.iter()
165+
.filter_map(|version| {
166+
if let Some(version) = version.as_str() {
167+
if let Ok(sem_ver) = semver::Version::parse(&version) {
168+
return Some(sem_ver);
169+
}
168170
}
169-
}
170-
}
171-
}
172171

173-
versions.sort();
174-
versions.reverse();
175-
versions
176-
.iter()
177-
.map(|version| map_to_release(&conn, crate_id, version.to_string()))
178-
.collect()
172+
None
173+
})
174+
.collect();
175+
176+
versions.sort();
177+
versions.reverse();
178+
versions
179+
.iter()
180+
.map(|version| map_to_release(&conn, crate_id, version.to_string()))
181+
.collect()
182+
} else {
183+
Vec::new()
184+
}
179185
};
180186

181187
let metadata = MetaData {
@@ -237,30 +243,34 @@ impl CrateDetails {
237243
}
238244

239245
// get authors
240-
for row in &conn
246+
let authors = conn
241247
.query(
242248
"SELECT name, slug
243249
FROM authors
244250
INNER JOIN author_rels ON author_rels.aid = authors.id
245251
WHERE rid = $1",
246252
&[&release_id],
247253
)
248-
.unwrap()
249-
{
254+
.unwrap();
255+
crate_details.authors.reserve(authors.len());
256+
257+
for row in authors.iter() {
250258
crate_details.authors.push((row.get(0), row.get(1)));
251259
}
252260

253261
// get owners
254-
for row in &conn
262+
let owners = conn
255263
.query(
256264
"SELECT login, avatar
257-
FROM owners
258-
INNER JOIN owner_rels ON owner_rels.oid = owners.id
259-
WHERE cid = $1",
265+
FROM owners
266+
INNER JOIN owner_rels ON owner_rels.oid = owners.id
267+
WHERE cid = $1",
260268
&[&crate_id],
261269
)
262-
.unwrap()
263-
{
270+
.unwrap();
271+
crate_details.owners.reserve(owners.len());
272+
273+
for row in owners.iter() {
264274
crate_details.owners.push((row.get(0), row.get(1)));
265275
}
266276

@@ -394,7 +404,7 @@ mod tests {
394404
expected_last_successful_build: Option<&str>,
395405
) -> Result<(), Error> {
396406
let details = CrateDetails::new(&db.conn(), package, version)
397-
.ok_or(failure::err_msg("could not fetch crate details"))?;
407+
.ok_or_else(|| failure::err_msg("could not fetch crate details"))?;
398408

399409
assert_eq!(
400410
details.last_successful_build,

src/web/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ fn match_version(conn: &Connection, name: &str, version: Option<&str>) -> Option
289289

290290
// we need to sort versions first
291291
let versions_sem = {
292-
let mut versions_sem: Vec<(Version, i32)> = Vec::new();
292+
let mut versions_sem: Vec<(Version, i32)> = Vec::with_capacity(versions.len());
293293

294294
for version in versions.iter().filter(|(_, _, yanked)| !yanked) {
295295
// in theory a crate must always have a semver compatible version, but check result just in case

src/web/releases.rs

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,10 @@ pub(crate) fn get_releases(conn: &Connection, page: i64, limit: i64, order: Orde
140140
LIMIT $1 OFFSET $2"
141141
}
142142
};
143+
let query = conn.query(&query, &[&limit, &offset]).unwrap();
143144

144-
let mut packages = Vec::new();
145-
for row in &conn.query(&query, &[&limit, &offset]).unwrap() {
145+
let mut packages = Vec::with_capacity(query.len());
146+
for row in query.iter() {
146147
let package = Release {
147148
name: row.get(0),
148149
version: row.get(1),
@@ -182,10 +183,11 @@ fn get_releases_by_author(
182183
WHERE authors.slug = $1
183184
ORDER BY crates.github_stars DESC
184185
LIMIT $2 OFFSET $3";
186+
let query = conn.query(&query, &[&author, &limit, &offset]).unwrap();
185187

186188
let mut author_name = String::new();
187-
let mut packages = Vec::new();
188-
for row in &conn.query(&query, &[&author, &limit, &offset]).unwrap() {
189+
let mut packages = Vec::with_capacity(query.len());
190+
for row in query.iter() {
189191
let package = Release {
190192
name: row.get(0),
191193
version: row.get(1),
@@ -227,10 +229,11 @@ fn get_releases_by_owner(
227229
WHERE owners.login = $1
228230
ORDER BY crates.github_stars DESC
229231
LIMIT $2 OFFSET $3";
232+
let query = conn.query(&query, &[&author, &limit, &offset]).unwrap();
230233

231234
let mut author_name = String::new();
232-
let mut packages = Vec::new();
233-
for row in &conn.query(&query, &[&author, &limit, &offset]).unwrap() {
235+
let mut packages = Vec::with_capacity(query.len());
236+
for row in query.iter() {
234237
let package = Release {
235238
name: row.get(0),
236239
version: row.get(1),
@@ -637,17 +640,18 @@ pub fn activity_handler(req: &mut Request) -> IronResult<Response> {
637640

638641
pub fn build_queue_handler(req: &mut Request) -> IronResult<Response> {
639642
let conn = extension!(req, Pool).get()?;
640-
let mut crates: Vec<(String, String, i32)> = Vec::new();
641-
for krate in &conn
643+
let query = conn
642644
.query(
643645
"SELECT name, version, priority
644-
FROM queue
645-
WHERE attempt < 5
646-
ORDER BY priority ASC, attempt ASC, id ASC",
646+
FROM queue
647+
WHERE attempt < 5
648+
ORDER BY priority ASC, attempt ASC, id ASC",
647649
&[],
648650
)
649-
.unwrap()
650-
{
651+
.unwrap();
652+
653+
let mut crates: Vec<(String, String, i32)> = Vec::with_capacity(query.len());
654+
for krate in query.iter() {
651655
crates.push((
652656
krate.get("name"),
653657
krate.get("version"),

src/web/rustdoc.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@ mod test {
579579
let data = web.get(path).send()?.text()?;
580580
println!("{}", data);
581581
let dom = kuchiki::parse_html().one(data);
582+
582583
if let Some(elem) = dom
583584
.select("form > ul > li > a.warn")
584585
.expect("invalid selector")

0 commit comments

Comments
 (0)