From 0a7ac8059a1936e59e0cb7f6a6008ea52ccab541 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Mon, 6 Mar 2017 14:48:26 -0500 Subject: [PATCH 1/4] Remove a mut vec --- src/bin/fill-in-user-id.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/bin/fill-in-user-id.rs b/src/bin/fill-in-user-id.rs index 2f78983cd7d..6a97fcd454a 100644 --- a/src/bin/fill-in-user-id.rs +++ b/src/bin/fill-in-user-id.rs @@ -52,16 +52,15 @@ struct GithubUser { } fn update(app: &App, tx: &postgres::transaction::Transaction) { - let mut rows = Vec::new(); - let query = "SELECT id, gh_login, gh_access_token, gh_avatar FROM users \ - WHERE gh_id IS NULL"; - for row in &tx.query(query, &[]).unwrap() { + let query = "SELECT id, gh_login, gh_access_token, gh_avatar FROM users + WHERE gh_id IS NULL"; + let rows = tx.query(query, &[]).unwrap().into_iter().map(|row| { let id: i32 = row.get("id"); let login: String = row.get("gh_login"); let token: String = row.get("gh_access_token"); let avatar: Option = row.get("gh_avatar"); - rows.push((id, login, http::token(token), avatar)); - } + (id, login, http::token(token), avatar) + }).collect::>(); for (id, login, token, avatar) in rows { println!("attempt: {}/{}", id, login); From d2c91517a18461c64448397bc614d225b2162d4d Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Wed, 8 Mar 2017 15:16:31 -0500 Subject: [PATCH 2/4] Remove a mut vec --- src/version.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/version.rs b/src/version.rs index a22eab42c6a..6815074db85 100644 --- a/src/version.rs +++ b/src/version.rs @@ -307,11 +307,9 @@ pub fn downloads(req: &mut Request) -> CargoResult { let stmt = tx.prepare("SELECT * FROM version_downloads WHERE date > $1 AND version_id = $2 ORDER BY date ASC")?; - let mut downloads = Vec::new(); - for row in stmt.query(&[&cutoff_date, &version.id])?.iter() { - let download: VersionDownload = Model::from_row(&row); - downloads.push(download.encodable()); - } + let downloads = stmt.query(&[&cutoff_date, &version.id])?.iter().map(|row| { + VersionDownload::from_row(&row).encodable() + }).collect(); #[derive(RustcEncodable)] struct R { version_downloads: Vec } From 7a52db581858e4ffe7981e7a50f683aa9d1d8918 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Wed, 8 Mar 2017 15:38:46 -0500 Subject: [PATCH 3/4] Remove a mut vec --- src/krate.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/krate.rs b/src/krate.rs index 2f02a398ac2..74ca24671ac 100644 --- a/src/krate.rs +++ b/src/krate.rs @@ -1015,11 +1015,9 @@ pub fn downloads(req: &mut Request) -> CargoResult { WHERE date > $1 AND version_id = ANY($2) ORDER BY date ASC")?; - let mut downloads = Vec::new(); - for row in stmt.query(&[&cutoff_date, &ids])?.iter() { - let download: VersionDownload = Model::from_row(&row); - downloads.push(download.encodable()); - } + let downloads = stmt.query(&[&cutoff_date, &ids])?.iter().map(|row| { + VersionDownload::from_row(&row).encodable() + }).collect::>(); let stmt = tx.prepare("\ SELECT COALESCE(to_char(DATE(version_downloads.date), 'YYYY-MM-DD'), '') AS date, From 6286ec6d80e90998e5659ddbca86877bb9330299 Mon Sep 17 00:00:00 2001 From: Eh2406 Date: Wed, 8 Mar 2017 15:45:35 -0500 Subject: [PATCH 4/4] Remove a mut vec --- src/krate.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/krate.rs b/src/krate.rs index 74ca24671ac..191ee69c3df 100644 --- a/src/krate.rs +++ b/src/krate.rs @@ -1030,13 +1030,12 @@ pub fn downloads(req: &mut Request) -> CargoResult { AND versions.id != ALL($3) GROUP BY DATE(version_downloads.date) ORDER BY DATE(version_downloads.date) ASC")?; - let mut extra = Vec::new(); - for row in stmt.query(&[&cutoff_date, &krate.id, &ids])?.iter() { - extra.push(ExtraDownload { + let extra = stmt.query(&[&cutoff_date, &krate.id, &ids])?.iter().map(|row| { + ExtraDownload { downloads: row.get("downloads"), date: row.get("date") - }); - } + } + }).collect::>(); #[derive(RustcEncodable)] struct ExtraDownload { date: String, downloads: i64 }