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); diff --git a/src/krate.rs b/src/krate.rs index 2f02a398ac2..191ee69c3df 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, @@ -1032,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 } 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 }