Есть ли способ конвертировать итератор поиска Select.rs в Rayon ParallelIterator? - PullRequest
1 голос
/ 18 апреля 2019

Я хотел бы преобразовать Find -тератор Select.rs в район ParallelIterator.Я не смог этого сделать, просто взломав API.Я подозреваю, что мне придется реализовать или расширить черту, но я понятия не имею, как это сделать.

Я пытался собрать итератор и использовать into_iter, но безрезультатно.

use reqwest;

use rayon::prelude::*;

use select::document::Document;
use select::predicate::{Class};

fn main() {
    println!("Hello, world!");

    let url = "https://pitchfork.com/reviews/albums/";
    let response = reqwest::get(url).unwrap();
    if response.status().is_success() {
        let document = Document::from_read(response).unwrap();
        let albums = document.find(Class("review"));
        let albums : Vec<String> = albums.par_iter()
                                        .map(|album| album.text()).collect();
    }
}

Это приводит к ошибке

error[E0599]: no method named `par_iter` found for type `select::document::Find<'_, select::predicate::Class<&str>>` in the current scope
  --> src/main.rs:16:40
   |
16 |         let albums : Vec<String> = albums.par_iter()
   |                                           ^^^^^^^^
   |
   = note: the method `par_iter` exists but the following trait bounds were not satisfied:
           `select::document::Find<'_, select::predicate::Class<&str>> : rayon::iter::IntoParallelRefIterator`

Я вижу, что метод par_iter не существует, но, похоже, метод iter тоже не существует.

Я предполагаю, что есть способ выполнить это без необходимости создания запроса на выборку для select.rs - в любом случае, помощь будет принята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...