├── INDEX_TYPES.txt ├── lucene ├── settings.gradle ├── build.sh ├── query.sh ├── build_index.sh ├── build.gradle └── src │ └── main │ └── java │ ├── DoQuery.java │ └── BuildIndex.java ├── common ├── queries │ ├── countries.txt │ ├── presidents.txt │ └── misc.txt └── datasets │ ├── minimal.json │ └── trump_test.json ├── .gitignore ├── benchmark ├── drive.sh ├── build.sh ├── Cargo.toml ├── src │ └── bin │ │ ├── sample_queries.rs │ │ ├── extract_queries.rs │ │ └── drive_queries.rs └── Cargo.lock ├── tantivy ├── build_index.sh ├── query.sh ├── build.sh ├── Cargo.toml ├── src │ └── bin │ │ ├── do_query.rs │ │ └── build_index.rs └── Cargo.lock ├── preprocess_all.sh ├── query_all.sh ├── LICENSE ├── run_all.sh └── README.md /INDEX_TYPES.txt: -------------------------------------------------------------------------------- 1 | lucene 2 | tantivy 3 | -------------------------------------------------------------------------------- /lucene/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'search-index-benchmark-game-lucene' 2 | 3 | -------------------------------------------------------------------------------- /common/queries/countries.txt: -------------------------------------------------------------------------------- 1 | United 2 | States 3 | +United +States 4 | "United States" 5 | Japan 6 | France 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .idea 3 | outputs 4 | benchmark/target 5 | tantivy/target 6 | lucene/.gradle 7 | lucene/build 8 | -------------------------------------------------------------------------------- /benchmark/drive.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | ${SCRIPT_PATH}/target/release/drive_queries "$@" -------------------------------------------------------------------------------- /tantivy/build_index.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | ${SCRIPT_PATH}/target/release/build_index "$@" -------------------------------------------------------------------------------- /tantivy/query.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | ${SCRIPT_PATH}/target/release/do_query "$@" 6 | -------------------------------------------------------------------------------- /benchmark/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | cd ${SCRIPT_PATH} 6 | 7 | cargo build --release 8 | -------------------------------------------------------------------------------- /lucene/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | cd ${SCRIPT_PATH} 6 | 7 | gradle clean shadowJar 8 | -------------------------------------------------------------------------------- /tantivy/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | cd ${SCRIPT_PATH} 6 | 7 | cargo build --release 8 | -------------------------------------------------------------------------------- /lucene/query.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | java -cp ${SCRIPT_PATH}/build/libs/search-index-benchmark-game-lucene-1.0-SNAPSHOT-all.jar DoQuery "$@" 6 | -------------------------------------------------------------------------------- /lucene/build_index.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SCRIPT_PATH=${0%/*} 4 | 5 | java -cp ${SCRIPT_PATH}/build/libs/search-index-benchmark-game-lucene-1.0-SNAPSHOT-all.jar BuildIndex "$@" -------------------------------------------------------------------------------- /common/queries/presidents.txt: -------------------------------------------------------------------------------- 1 | "donald trump" 2 | "trump Donald" 3 | "barack obama" 4 | "george bush" 5 | +george +bush 6 | "george w. bush" 7 | "george h. w. bush" 8 | "bill clinton" 9 | -------------------------------------------------------------------------------- /tantivy/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "tantivy-bench" 3 | version = "0.1.0" 4 | authors = ["Jason Wolfe"] 5 | 6 | [dependencies] 7 | serde = "1.0" 8 | serde_derive = "1.0" 9 | serde_json = "1.0" 10 | tantivy = "0.5" -------------------------------------------------------------------------------- /preprocess_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | BASE=${0%/*} 6 | 7 | INDEX_TYPES=`cat ${BASE}/INDEX_TYPES.txt` 8 | for INDEX_TYPE in ${INDEX_TYPES} ; do 9 | echo "Building programs for ${INDEX_TYPE}" 10 | ${BASE}/${INDEX_TYPE}/build.sh && echo "success" 11 | done -------------------------------------------------------------------------------- /benchmark/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "benchmark" 3 | version = "0.1.0" 4 | authors = ["Jason Wolfe"] 5 | 6 | [dependencies] 7 | bzip2 = "0.3" 8 | clap = "2.30.0" 9 | csv = "1.0.0-beta.5" 10 | quick-xml = "0.11.0" 11 | rand = "0.4" 12 | scraper = "0.5.0" 13 | stopwatch = "0.0.7" -------------------------------------------------------------------------------- /lucene/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.github.johnrengelman.shadow' version '2.0.2' 3 | id 'java' 4 | } 5 | 6 | version '1.0-SNAPSHOT' 7 | 8 | sourceCompatibility = 1.8 9 | 10 | repositories { 11 | mavenCentral() 12 | } 13 | 14 | dependencies { 15 | compile 'org.apache.lucene:lucene-core:7.2.1' 16 | compile 'org.apache.lucene:lucene-analyzers-common:7.2.1' 17 | compile 'org.apache.lucene:lucene-queryparser:7.2.1' 18 | 19 | compile group: 'com.eclipsesource.minimal-json', name: 'minimal-json', version: '0.9.5' 20 | 21 | testCompile group: 'junit', name: 'junit', version: '4.12' 22 | } -------------------------------------------------------------------------------- /common/queries/misc.txt: -------------------------------------------------------------------------------- 1 | nurse doctor dentist surgeon anesthesiologist anesthetist "respiratory therapist" cardiologist intensivist neonatologist dermatologist "emergency medical technician" endocrinologist geriatrician gastroenterologist haematologist phlebotomist hephrologist neurologist audiologist "speech language pathologist" oncologist "radiation therapist" opthamologist optometrist 2 | tonkatsu takoyaki sushi "miso soup" ramen udon soba tsukemen "chicken nanban" karage karaage sashimi teishoku "curry rice" "hayashi rice" mochi omurice onigiri okayu gyudon donburi katsudon oyakodon tekkadon tempura "curry bread" gyoza okonomiyaki kushikatsu yakiniku yakitori 3 | -------------------------------------------------------------------------------- /common/datasets/minimal.json: -------------------------------------------------------------------------------- 1 | {"url":"https://en.wikipedia.org/wiki?curid=1", "title":"Donald Trump", "body": "Donald Trump is the 45th and current resident of the United States of America."} 2 | {"url":"https://en.wikipedia.org/wiki?curid=2", "title":"Barack Obama", "body": "Barack Obama was the 44th president of the United States of America."} 3 | {"url":"https://en.wikipedia.org/wiki?curid=3", "title":"George W. Bush", "body": "George W. Bush (Dubya) was the 43rd president of the United States of America."} 4 | {"url":"https://en.wikipedia.org/wiki?curid=4", "title":"Bill Clinton", "body": "Bill Clinton was the 42nd president of the United States of America."} 5 | {"url":"https://en.wikipedia.org/wiki?curid=5", "title":"George H. W. Bush", "body": "George H. W. Bush was the 41st president of the United States of America."} -------------------------------------------------------------------------------- /query_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | BASE=${0%/*} 6 | 7 | PREFIX=$1 8 | 9 | if [[ ! ${PREFIX} =~ ^[a-zA-Z0-9]+$ ]] ; then 10 | echo Output prefix \(${PREFIX}\) must consist of only alpha-numeric characters 11 | exit 1 12 | fi 13 | 14 | shift 15 | 16 | TOP_LEVEL_OUTPUTS=${BASE}/outputs 17 | mkdir -p ${TOP_LEVEL_OUTPUTS} 18 | PIPE_FILE=${TOP_LEVEL_OUTPUTS}/.pipe 19 | mkfifo ${PIPE_FILE} || echo Pipe file already exists 20 | 21 | INDEX_TYPES=`cat ${BASE}/INDEX_TYPES.txt` 22 | for INDEX_TYPE in ${INDEX_TYPES} ; do 23 | OUTPUT=${TOP_LEVEL_OUTPUTS}/${INDEX_TYPE} 24 | INDEX_OUTPUT=${OUTPUT}/index 25 | echo Querying against ${INDEX_TYPE} 26 | ${BASE}/benchmark/drive.sh $@ <${PIPE_FILE} 2>${OUTPUT}/${PREFIX}_query_output.txt | ${INDEX_TYPE}/query.sh ${INDEX_OUTPUT} >${PIPE_FILE} 27 | done -------------------------------------------------------------------------------- /tantivy/src/bin/do_query.rs: -------------------------------------------------------------------------------- 1 | extern crate tantivy; 2 | 3 | use tantivy::Index; 4 | use tantivy::query::QueryParser; 5 | use tantivy::tokenizer::TokenizerManager; 6 | 7 | use std::env; 8 | use std::io::BufRead; 9 | use std::io::Result; 10 | use std::path::Path; 11 | 12 | fn main() { 13 | let args: Vec = env::args().collect(); 14 | main_inner(&Path::new(&args[1])).unwrap() 15 | } 16 | 17 | fn main_inner(index_dir: &Path) -> Result<()> { 18 | let index = Index::open(index_dir).expect("failed to open index"); 19 | let all_field = index.schema().get_field("all").expect("no all field?!"); 20 | let query_parser = QueryParser::new(index.schema(), vec![all_field], TokenizerManager::default()); 21 | 22 | let searcher = index.searcher(); 23 | 24 | let stdin = std::io::stdin(); 25 | for line in stdin.lock().lines() { 26 | let line = line?; 27 | let query = query_parser.parse_query(&line).expect("failed to parse query!"); 28 | println!("{}", query.count(&*searcher).expect("Search failed")); 29 | } 30 | 31 | Ok(()) 32 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Jason Wolfe 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /benchmark/src/bin/sample_queries.rs: -------------------------------------------------------------------------------- 1 | extern crate csv; 2 | extern crate rand; 3 | 4 | use std::env; 5 | use std::fs::File; 6 | use std::io::Result; 7 | use std::path::Path; 8 | 9 | use csv::Reader; 10 | use rand::distributions::{Weighted, WeightedChoice, IndependentSample}; 11 | 12 | fn main() { 13 | let args = env::args().collect::>(); 14 | let num_queries = args[2].parse::().expect("invalid num queries"); 15 | main_inner(&Path::new(&args[1]), num_queries).unwrap() 16 | } 17 | 18 | fn main_inner(input_path: &Path, num_queries: usize) -> Result<()> { 19 | let mut reader = Reader::from_reader(File::open(input_path)?); 20 | let mut weighted_options = Vec::new(); 21 | for record in reader.records() { 22 | let record = record?; 23 | weighted_options.push(Weighted { 24 | weight: record[1].parse::().expect("encountered invalid weight"), 25 | item: record[0].to_string(), 26 | }); 27 | } 28 | 29 | let wc = WeightedChoice::new(&mut weighted_options); 30 | let mut rng = rand::thread_rng(); 31 | 32 | for _ in 0..num_queries { 33 | let sample = wc.ind_sample(&mut rng); 34 | println!("{}", sample); 35 | } 36 | 37 | Ok(()) 38 | } -------------------------------------------------------------------------------- /lucene/src/main/java/DoQuery.java: -------------------------------------------------------------------------------- 1 | import org.apache.lucene.analysis.CharArraySet; 2 | import org.apache.lucene.analysis.standard.StandardAnalyzer; 3 | import org.apache.lucene.index.DirectoryReader; 4 | import org.apache.lucene.index.IndexReader; 5 | import org.apache.lucene.queryparser.classic.ParseException; 6 | import org.apache.lucene.queryparser.classic.QueryParser; 7 | import org.apache.lucene.search.IndexSearcher; 8 | import org.apache.lucene.search.Query; 9 | import org.apache.lucene.store.FSDirectory; 10 | 11 | import java.io.BufferedReader; 12 | import java.io.IOException; 13 | import java.io.InputStreamReader; 14 | import java.nio.file.Path; 15 | import java.nio.file.Paths; 16 | 17 | public class DoQuery { 18 | public static void main(String[] args) throws IOException, ParseException { 19 | final Path indexDir = Paths.get(args[0]); 20 | try (IndexReader reader = DirectoryReader.open(FSDirectory.open(indexDir))) { 21 | final IndexSearcher searcher = new IndexSearcher(reader); 22 | searcher.setQueryCache(null); 23 | try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) { 24 | final QueryParser queryParser = new QueryParser("all", new StandardAnalyzer(CharArraySet.EMPTY_SET)); 25 | String line; 26 | while ((line = bufferedReader.readLine()) != null) { 27 | Query query = queryParser.parse(line); 28 | query = query.rewrite(reader); 29 | System.out.println(searcher.count(query)); 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /common/datasets/trump_test.json: -------------------------------------------------------------------------------- 1 | {"url":"https://en.wikipedia.org/wiki?curid=49000468","title":"Diamond and Silk","body":"\nDiamond and Silk\n\nLynnette Hardaway and Rochelle Richardson, better known by their stage name Diamond and Silk are an African American duo mainly active as video bloggers and YouTube personalities. Hardaway and her co-host Richardson are former Democrats. The duo came to wider prominence in 2015 as supporters of conservative Presidential candidate Donald Trump after posting a video criticizing Fox News host Megyn Kelly for asking irrelevant questions during the first GOP candidate debate. While they are not formally affiliated with the Trump campaign or paid by it, they have been urging other supporters of Trump to follow suit on social media and at rallies. They have also created a \"ditch and switch\" website explaining to voters which states are closed primaries and when the deadlines are for changing party affiliations. They are biological sisters from North Carolina who say they stand with the silent majority, voicing their opinions about \"media bias, political babble, and repetitive political tactics that they feel the average American is tired of being subjected to.\" \nThe duo first joined Donald Trump as the Stump for Trump Girls on stage at his Raleigh, North Carolina rally on December 4, 2015. They later riled up the crowd at the Trump rally on January 2, 2016, in Biloxi, Mississippi, that attracted more than 14,000 people. At the Biloxi rally, the duo urged Democrats and independents in the audience to \"ditch and switch\", \"i.e.\", to register as Republicans and vote for Donald Trump in the primary and general election. It is believed that these two sisters are having a big impact because Americans from different nationality are changing their party affiliation from Democrats and Independents to Republicans just to vote for Donald J. Trump.\n\n"} -------------------------------------------------------------------------------- /benchmark/src/bin/extract_queries.rs: -------------------------------------------------------------------------------- 1 | extern crate csv; 2 | extern crate scraper; 3 | 4 | use std::env; 5 | use std::fs; 6 | use std::io::Read; 7 | use std::io::Result; 8 | use std::fs::File; 9 | use std::path::Path; 10 | 11 | use csv::Writer; 12 | use scraper::{Html, Selector}; 13 | 14 | /// Extract pairs of search topics and counts from data in the format of the 15 | /// Google Search Trends web page. 16 | /// Output a CSV of these pairs. 17 | 18 | fn main() { 19 | let args: Vec = env::args().collect(); 20 | main_inner(&Path::new(&args[1]), &Path::new(&args[2])).unwrap() 21 | } 22 | 23 | fn main_inner(html_file: &Path, output_path: &Path) -> Result<()> { 24 | let mut file = File::open(html_file)?; 25 | let mut file_contents = String::new(); 26 | file.read_to_string(&mut file_contents)?; 27 | 28 | let fragment = Html::parse_fragment(&file_contents); 29 | let container_selector = Selector::parse(".hottrends-trends-list-trend-container").expect("failed to parse selector"); 30 | let title_selector = Selector::parse(".hottrends-single-trend-title").expect("failed to parse selector"); 31 | let count_selector = Selector::parse(".hottrends-single-trend-info-line-number").expect("failed to parse selector"); 32 | 33 | let mut writer = Writer::from_path(output_path)?; 34 | 35 | for container in fragment.select(&container_selector) { 36 | if let Some(elem) = container.select(&title_selector).next() { 37 | let title = elem.text().collect::(); 38 | if let Some(elem) = container.select(&count_selector).next() { 39 | let raw_count = elem.text().collect::(); 40 | let count = raw_count.chars().filter(|x| x.is_ascii_digit()).collect::(); 41 | writer.write_record(&[title, count]); 42 | } 43 | } 44 | } 45 | 46 | Ok(()) 47 | 48 | } -------------------------------------------------------------------------------- /run_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | BASE=${0%/*} 6 | 7 | PROGRAM_NAME=$0 8 | 9 | display_usage() { 10 | echo -e "Build all benchmarks, create search indexes using the supplied document set, and run the supplied queries to benchmark." 11 | echo -e "Output goes into the outputs/ directory." 12 | echo -e "" 13 | echo -e "Usage: ${PROGRAM_NAME} document_file query_directory" 14 | echo -e "" 15 | echo -e "Parameters:" 16 | echo -e " document_file A JSON file containing one document per line, with \"url\", \"title\", and \"body\" fields" 17 | echo -e " query_directory A .txt file or directory containing .txt files. Should have one query per line. Will be recursively searched." 18 | echo -e " -h --help Display this usage guide" 19 | } 20 | 21 | if [ $# -le 1 ] 22 | then 23 | display_usage 24 | exit 1 25 | fi 26 | 27 | if [[ ( $# == "--help") || $# == "-h" ]] 28 | then 29 | display_usage 30 | exit 0 31 | fi 32 | 33 | echo Building base benchmark code 34 | ${BASE}/benchmark/build.sh 35 | 36 | echo Building individual benchmark projects 37 | ${BASE}/preprocess_all.sh 38 | 39 | TOP_LEVEL_OUTPUTS=${BASE}/outputs 40 | 41 | mkdir ${TOP_LEVEL_OUTPUTS} 42 | PIPE_FILE=${TOP_LEVEL_OUTPUTS}/.pipe 43 | 44 | mkfifo ${PIPE_FILE} 45 | 46 | INDEX_TYPES=`cat ${BASE}/INDEX_TYPES.txt` 47 | for INDEX_TYPE in ${INDEX_TYPES} ; do 48 | echo Processing ${INDEX_TYPE} 49 | 50 | OUTPUT=${TOP_LEVEL_OUTPUTS}/${INDEX_TYPE} 51 | mkdir ${OUTPUT} 52 | INDEX_OUTPUT=${OUTPUT}/index 53 | mkdir ${INDEX_OUTPUT} 54 | 55 | echo Building index for ${INDEX_TYPE} into ${INDEX_OUTPUT} 56 | start=`date +%s` 57 | ${BASE}/${INDEX_TYPE}/build_index.sh ${INDEX_OUTPUT} < $1 58 | end=`date +%s` 59 | runtime=$((end-start)) 60 | echo Building index for ${INDEX_TYPE} took ${runtime} seconds 61 | echo ${runtime} > ${OUTPUT}/build_time.txt 62 | 63 | echo Querying against ${INDEX_TYPE} 64 | ${BASE}/benchmark/drive.sh --queries $2 <${PIPE_FILE} 2>${OUTPUT}/query_output.txt | ${INDEX_TYPE}/query.sh ${INDEX_OUTPUT} >${PIPE_FILE} 65 | done 66 | 67 | rm ${PIPE_FILE} -------------------------------------------------------------------------------- /tantivy/src/bin/build_index.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | extern crate tantivy; 3 | extern crate core; 4 | 5 | extern crate serde; 6 | #[macro_use] 7 | extern crate serde_derive; 8 | extern crate serde_json; 9 | 10 | 11 | use tantivy::schema::SchemaBuilder; 12 | use tantivy::schema::IntOptions; 13 | use tantivy::Index; 14 | 15 | use std::env; 16 | use std::io::BufRead; 17 | use std::io::Result; 18 | use std::path::Path; 19 | use tantivy::schema::Cardinality; 20 | use tantivy::schema::{TEXT, STORED}; 21 | 22 | fn main() { 23 | let args: Vec = env::args().collect(); 24 | main_inner(&Path::new(&args[1])).unwrap(); 25 | } 26 | 27 | #[derive(Debug, Serialize, Deserialize)] 28 | struct InputDocument { 29 | url: String, 30 | title: String, 31 | body: String, 32 | } 33 | 34 | fn main_inner(output_dir: &Path) -> Result<()> { 35 | let mut schema_builder = SchemaBuilder::default(); 36 | 37 | let id_field = schema_builder.add_u64_field("id", IntOptions::default().set_fast(Cardinality::SingleValue)); 38 | let title_field = schema_builder.add_text_field("title", TEXT | STORED); 39 | let all_field = schema_builder.add_text_field("all", TEXT); 40 | 41 | let schema = schema_builder.build(); 42 | 43 | let index = Index::create(output_dir, schema).expect("failed to create index"); 44 | 45 | // 4 GB heap 46 | let mut index_writer = index.writer(200_000_000).expect("failed to create index writer"); 47 | 48 | let stdin = std::io::stdin(); 49 | for line in stdin.lock().lines() { 50 | let line = line?; 51 | 52 | if line.trim().is_empty() { 53 | continue; 54 | } 55 | 56 | let input_doc: InputDocument = serde_json::from_str(&line)?; 57 | 58 | let url_prefix = "https://en.wikipedia.org/wiki?curid="; 59 | if !input_doc.url.starts_with(url_prefix) { 60 | continue; 61 | } 62 | if let Ok(doc_id) = input_doc.url[url_prefix.len()..].parse::() { 63 | let all = format!("{}\n{}", input_doc.title, input_doc.body); 64 | index_writer.add_document(doc!( 65 | id_field=>doc_id, 66 | title_field=>input_doc.title, 67 | all_field=>all 68 | )); 69 | } else { 70 | println!("invalid doc id in {:?}", input_doc); 71 | }; 72 | 73 | } 74 | 75 | index_writer.commit().expect("failed to commit"); 76 | index_writer.wait_merging_threads().expect("Failed while waiting merging threads"); 77 | Ok(()) 78 | } 79 | -------------------------------------------------------------------------------- /lucene/src/main/java/BuildIndex.java: -------------------------------------------------------------------------------- 1 | import com.eclipsesource.json.Json; 2 | import com.eclipsesource.json.JsonObject; 3 | import org.apache.lucene.analysis.CharArraySet; 4 | import org.apache.lucene.analysis.standard.StandardAnalyzer; 5 | import org.apache.lucene.document.*; 6 | import org.apache.lucene.index.IndexWriter; 7 | import org.apache.lucene.index.IndexWriterConfig; 8 | import org.apache.lucene.store.FSDirectory; 9 | 10 | import java.io.BufferedReader; 11 | import java.io.IOException; 12 | import java.io.InputStreamReader; 13 | import java.nio.file.Path; 14 | import java.nio.file.Paths; 15 | 16 | public class BuildIndex { 17 | public static void main(String[] args) throws IOException { 18 | final Path outputPath = Paths.get(args[0]); 19 | 20 | final StandardAnalyzer standardAnalyzer = new StandardAnalyzer(CharArraySet.EMPTY_SET); 21 | final IndexWriterConfig config = new IndexWriterConfig(standardAnalyzer); 22 | try (IndexWriter writer = new IndexWriter(FSDirectory.open(outputPath), config)) { 23 | try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in))) { 24 | final Document document = new Document(); 25 | 26 | LongPoint idPoint = new LongPoint("id", 0L); 27 | StoredField idField = new StoredField("id", 0L); 28 | TextField titleField = new TextField("title", "", Field.Store.YES); 29 | TextField allField = new TextField("all", "", Field.Store.NO); 30 | document.add(idPoint); 31 | document.add(idField); 32 | document.add(titleField); 33 | document.add(allField); 34 | 35 | String line; 36 | while ((line = bufferedReader.readLine()) != null) { 37 | if (line.trim().isEmpty()) { 38 | continue; 39 | } 40 | 41 | final JsonObject parsed_doc = Json.parse(line).asObject(); 42 | final String url = parsed_doc.get("url").asString(); 43 | 44 | final String urlPrefix = "https://en.wikipedia.org/wiki?curid="; 45 | if (url.startsWith(urlPrefix)) { 46 | try { 47 | final long doc_id = Long.parseLong(url.substring(urlPrefix.length())); 48 | idPoint.setLongValue(doc_id); 49 | idField.setLongValue(doc_id); 50 | final String title = parsed_doc.get("title").asString(); 51 | titleField.setStringValue(title); 52 | final String body = parsed_doc.get("body").asString(); 53 | allField.setStringValue(title + "\n" + body); 54 | writer.addDocument(document); 55 | } catch (NumberFormatException e) { 56 | continue; 57 | } 58 | } 59 | } 60 | } 61 | 62 | writer.commit(); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Search Index Benchmark Game 2 | 3 | A set of standardized benchmarks for comparing the speed of various aspects of search engine technologies. 4 | 5 | This is useful both for comparing different libraries and as tooling for more easily and comprehensively 6 | comparing versions of the same technology. 7 | 8 | ## Getting Started 9 | 10 | These instructions will get you a copy of the project up and running on your local machine. 11 | 12 | ### Prerequisites 13 | 14 | The lucene benchmarks requires Gradle. This can be installed from [the Gradle website](https://gradle.org/). 15 | 16 | The tantivy benchmarks and benchmark driver code requires Cargo. This can be installed using [rustup](https://www.rustup.rs/). 17 | 18 | 19 | ### Installing 20 | 21 | Clone this repo. 22 | 23 | ``` 24 | git clone git@github.com:jason-wolfe/search-index-benchmark-game.git 25 | ``` 26 | 27 | And that's it! 28 | 29 | ## Running 30 | 31 | You can now pass any file containing articles in JSON format, and a directory containing queries. 32 | A minimal example of articles is included [in the project](./common/datasets/minimal.json). 33 | A small set of queries is included [in the project](./common/queries). 34 | 35 | Running with the examples can be done like so 36 | 37 | ``` 38 | ./run_all.sh ./common/datasets/minimal.json ./common/queries 39 | ``` 40 | 41 | This will: 42 | 1. build the benchmark driving code 43 | 2. For each engine being tested: 44 | 1. Build the code necessary to use it 45 | 2. Build an index using the supplied documents, and output timing in seconds to `output/$engine/build_time.txt`. 46 | 3. Run all of the supplied queries a number of times, recording the time taken to run in `output/$engine/query_output.txt`. 47 | 48 | The supplied queries can be a directory, which will be searched recursively for `.txt` files to run, 49 | or it can be a `.txt` file itself, which will be used directly. 50 | 51 | The output goes into the `output` subdirectory. 52 | It contains one folder per engine tested. 53 | 54 | ## Running more 55 | 56 | Maybe you want to query again after you know the page cache is warmed up, to better represent your production workflow. 57 | Or maybe you're debugging something or trying to improve query performance, and would like to run some queries without building the indexes again. 58 | For these use-cases, the `query_all.sh` script allows you to run the given set of queries against the already built indexes. 59 | 60 | The argument format is the same as [`drive_queries.rs`](./benchmark/src/bin/drive_queries.rs), 61 | which differs from `run_all.sh`, but allows more flexibility than `run_all.sh` currently offers. 62 | 63 | ```bash 64 | ./query_all.sh --queries ./common/queries/my_expensive_queries.txt -n 1 65 | ``` 66 | 67 | Important note: 68 | This assumes that each of your projects is already compiled as you wish them to be. 69 | If this is not the case, run `preprocess_all.sh` and they will build per the standard process. 70 | 71 | ## TODO 72 | 73 | Supply a better representative training set for easy use. 74 | 75 | Support more engines. 76 | 77 | Improve `benchmark/run_all.sh` to allow passing more parameters to the `drive.sh` program. 78 | 79 | Output a more consumable summary format of any measurements made, to make comparison easier. -------------------------------------------------------------------------------- /benchmark/src/bin/drive_queries.rs: -------------------------------------------------------------------------------- 1 | extern crate clap; 2 | extern crate stopwatch; 3 | 4 | use std::env; 5 | use std::fs; 6 | use std::io::Result; 7 | use std::fs::File; 8 | use std::io; 9 | use std::io::BufRead; 10 | use std::io::BufReader; 11 | use std::path::Path; 12 | 13 | use clap::{Arg, App}; 14 | use stopwatch::Stopwatch; 15 | 16 | fn main() { 17 | let matches = App::new("Query Driver") 18 | .arg( 19 | Arg::with_name("queries") 20 | .short("q") 21 | .long("queries") 22 | .value_name("FILE|DIRECTORY") 23 | .takes_value(true) 24 | .required(true) 25 | ) 26 | .arg( 27 | Arg::with_name("num_repetitions") 28 | .short("n") 29 | .value_name("#repetitions") 30 | .takes_value(true) 31 | .default_value("20") 32 | ) 33 | .get_matches(); 34 | 35 | let query_file_path = Path::new(matches.value_of("queries").unwrap()); 36 | let num_repetitions = matches.value_of("num_repetitions").unwrap().parse::().expect("invalid number of repetitions given"); 37 | 38 | main_inner(&query_file_path, num_repetitions).unwrap() 39 | } 40 | 41 | fn main_inner(base_dir: &Path, num_repeats: usize) -> Result<()> { 42 | let stdin = io::stdin(); 43 | let mut stdin_handle = stdin.lock(); 44 | 45 | process(&mut stdin_handle, base_dir, num_repeats)?; 46 | 47 | Ok(()) 48 | } 49 | 50 | fn process(input: &mut BufRead, dir: &Path, num_repeats: usize) -> Result<()> { 51 | if dir.is_dir() { 52 | for entry in fs::read_dir(dir)? { 53 | let entry = entry?; 54 | process(input, &entry.path(), num_repeats)?; 55 | } 56 | } else if dir.is_file() && dir.extension().map_or(false, |ext| ext == "txt") { 57 | eprintln!("Executing file at {:?}", dir); 58 | let file_stopwatch = Stopwatch::start_new(); 59 | let file = BufReader::new(File::open(&dir)?); 60 | 61 | let mut result_buf = String::new(); 62 | let mut num_queries = 0; 63 | 64 | for line in file.lines() { 65 | let line = line?; 66 | 67 | if line.len() > 0 { 68 | eprintln!("query: {}", line); 69 | let overall_stopwatch = Stopwatch::start_new(); 70 | for _ in 0..num_repeats { 71 | let query_stopwatch = Stopwatch::start_new(); 72 | result_buf.clear(); 73 | println!("{}", line); 74 | input.read_line(&mut result_buf)?; 75 | let elapsed = query_stopwatch.elapsed_ms(); 76 | let num_results: u64 = result_buf.trim_right().parse().map_err(|_| format!("invalid u64 response: {}", result_buf)).unwrap(); 77 | eprintln!("num_results = {}, elapsed = {}ms", num_results, elapsed); 78 | } 79 | 80 | if num_repeats > 1 { 81 | let average_time = overall_stopwatch.elapsed_ms() as f64 / num_repeats as f64; 82 | eprintln!("average_time = {:?}", average_time); 83 | } 84 | 85 | num_queries += 1; 86 | } 87 | } 88 | 89 | if num_queries > 1 { 90 | let file_elapsed = file_stopwatch.elapsed_ms(); 91 | let avg_elapsed = file_elapsed as f64 / num_queries as f64; 92 | eprintln!("processing {} queries in file {:?} took = {:?}. Average = {}.", num_queries, dir, file_elapsed, avg_elapsed); 93 | } 94 | } 95 | 96 | Ok(()) 97 | } -------------------------------------------------------------------------------- /tantivy/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "aho-corasick" 3 | version = "0.6.4" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | dependencies = [ 6 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 7 | ] 8 | 9 | [[package]] 10 | name = "ascii" 11 | version = "0.7.1" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | 14 | [[package]] 15 | name = "atomicwrites" 16 | version = "0.1.5" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | dependencies = [ 19 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 20 | "nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 23 | ] 24 | 25 | [[package]] 26 | name = "backtrace" 27 | version = "0.3.5" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | dependencies = [ 30 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 31 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 32 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 33 | "rustc-demangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 34 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 35 | ] 36 | 37 | [[package]] 38 | name = "backtrace-sys" 39 | version = "0.1.16" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | dependencies = [ 42 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 44 | ] 45 | 46 | [[package]] 47 | name = "bit-set" 48 | version = "0.4.0" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | dependencies = [ 51 | "bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 52 | ] 53 | 54 | [[package]] 55 | name = "bit-vec" 56 | version = "0.4.4" 57 | source = "registry+https://github.com/rust-lang/crates.io-index" 58 | 59 | [[package]] 60 | name = "bitflags" 61 | version = "0.5.0" 62 | source = "registry+https://github.com/rust-lang/crates.io-index" 63 | 64 | [[package]] 65 | name = "bitflags" 66 | version = "0.9.1" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | 69 | [[package]] 70 | name = "bitflags" 71 | version = "1.0.1" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | 74 | [[package]] 75 | name = "byteorder" 76 | version = "1.2.1" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | 79 | [[package]] 80 | name = "cc" 81 | version = "1.0.4" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | 84 | [[package]] 85 | name = "cfg-if" 86 | version = "0.1.2" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | 89 | [[package]] 90 | name = "chan" 91 | version = "0.1.21" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | dependencies = [ 94 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 95 | ] 96 | 97 | [[package]] 98 | name = "combine" 99 | version = "2.5.2" 100 | source = "registry+https://github.com/rust-lang/crates.io-index" 101 | dependencies = [ 102 | "ascii 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 103 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 104 | ] 105 | 106 | [[package]] 107 | name = "crossbeam" 108 | version = "0.3.2" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | 111 | [[package]] 112 | name = "downcast" 113 | version = "0.9.2" 114 | source = "registry+https://github.com/rust-lang/crates.io-index" 115 | 116 | [[package]] 117 | name = "dtoa" 118 | version = "0.4.2" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | 121 | [[package]] 122 | name = "either" 123 | version = "1.4.0" 124 | source = "registry+https://github.com/rust-lang/crates.io-index" 125 | 126 | [[package]] 127 | name = "error-chain" 128 | version = "0.8.1" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | dependencies = [ 131 | "backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 132 | ] 133 | 134 | [[package]] 135 | name = "fs2" 136 | version = "0.2.5" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | dependencies = [ 139 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 140 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 141 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 142 | ] 143 | 144 | [[package]] 145 | name = "fst" 146 | version = "0.2.3" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | dependencies = [ 149 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "memmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 151 | ] 152 | 153 | [[package]] 154 | name = "fuchsia-zircon" 155 | version = "0.3.3" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | dependencies = [ 158 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 159 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 160 | ] 161 | 162 | [[package]] 163 | name = "fuchsia-zircon-sys" 164 | version = "0.3.3" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | 167 | [[package]] 168 | name = "futures" 169 | version = "0.1.18" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | 172 | [[package]] 173 | name = "futures-cpupool" 174 | version = "0.1.8" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | dependencies = [ 177 | "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 178 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 179 | ] 180 | 181 | [[package]] 182 | name = "gcc" 183 | version = "0.3.54" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | 186 | [[package]] 187 | name = "getopts" 188 | version = "0.2.17" 189 | source = "registry+https://github.com/rust-lang/crates.io-index" 190 | 191 | [[package]] 192 | name = "itertools" 193 | version = "0.5.10" 194 | source = "registry+https://github.com/rust-lang/crates.io-index" 195 | dependencies = [ 196 | "either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 197 | ] 198 | 199 | [[package]] 200 | name = "itoa" 201 | version = "0.3.4" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | 204 | [[package]] 205 | name = "kernel32-sys" 206 | version = "0.2.2" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | dependencies = [ 209 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 210 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 211 | ] 212 | 213 | [[package]] 214 | name = "lazy_static" 215 | version = "0.1.16" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | 218 | [[package]] 219 | name = "lazy_static" 220 | version = "0.2.11" 221 | source = "registry+https://github.com/rust-lang/crates.io-index" 222 | 223 | [[package]] 224 | name = "lazy_static" 225 | version = "1.0.0" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | 228 | [[package]] 229 | name = "libc" 230 | version = "0.2.36" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | 233 | [[package]] 234 | name = "log" 235 | version = "0.3.9" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | dependencies = [ 238 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 239 | ] 240 | 241 | [[package]] 242 | name = "log" 243 | version = "0.4.1" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | dependencies = [ 246 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 247 | ] 248 | 249 | [[package]] 250 | name = "lz4" 251 | version = "1.22.0" 252 | source = "registry+https://github.com/rust-lang/crates.io-index" 253 | dependencies = [ 254 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 255 | "lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 256 | "skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 257 | ] 258 | 259 | [[package]] 260 | name = "lz4-sys" 261 | version = "1.8.0" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | dependencies = [ 264 | "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", 265 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 266 | ] 267 | 268 | [[package]] 269 | name = "maplit" 270 | version = "0.1.6" 271 | source = "registry+https://github.com/rust-lang/crates.io-index" 272 | 273 | [[package]] 274 | name = "matches" 275 | version = "0.1.6" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | 278 | [[package]] 279 | name = "memchr" 280 | version = "2.0.1" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | dependencies = [ 283 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 284 | ] 285 | 286 | [[package]] 287 | name = "memmap" 288 | version = "0.4.0" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | dependencies = [ 291 | "fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 292 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 293 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 294 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 295 | ] 296 | 297 | [[package]] 298 | name = "nix" 299 | version = "0.9.0" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | dependencies = [ 302 | "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 303 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 304 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 305 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 306 | ] 307 | 308 | [[package]] 309 | name = "num-traits" 310 | version = "0.1.43" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | dependencies = [ 313 | "num-traits 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 314 | ] 315 | 316 | [[package]] 317 | name = "num-traits" 318 | version = "0.2.0" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | 321 | [[package]] 322 | name = "num_cpus" 323 | version = "1.8.0" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | dependencies = [ 326 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 327 | ] 328 | 329 | [[package]] 330 | name = "owning_ref" 331 | version = "0.3.3" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | dependencies = [ 334 | "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 335 | ] 336 | 337 | [[package]] 338 | name = "pulldown-cmark" 339 | version = "0.0.8" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | dependencies = [ 342 | "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 343 | "getopts 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)", 344 | ] 345 | 346 | [[package]] 347 | name = "quote" 348 | version = "0.3.15" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | 351 | [[package]] 352 | name = "rand" 353 | version = "0.3.22" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | dependencies = [ 356 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 357 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 358 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 359 | ] 360 | 361 | [[package]] 362 | name = "rand" 363 | version = "0.4.2" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | dependencies = [ 366 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 369 | ] 370 | 371 | [[package]] 372 | name = "redox_syscall" 373 | version = "0.1.37" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | 376 | [[package]] 377 | name = "regex" 378 | version = "0.2.6" 379 | source = "registry+https://github.com/rust-lang/crates.io-index" 380 | dependencies = [ 381 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 382 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 383 | "regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 384 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 385 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 386 | ] 387 | 388 | [[package]] 389 | name = "regex-syntax" 390 | version = "0.4.2" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | 393 | [[package]] 394 | name = "remove_dir_all" 395 | version = "0.3.0" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | dependencies = [ 398 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 399 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 400 | ] 401 | 402 | [[package]] 403 | name = "rust-stemmers" 404 | version = "0.1.0" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | 407 | [[package]] 408 | name = "rustc-demangle" 409 | version = "0.1.6" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | 412 | [[package]] 413 | name = "serde" 414 | version = "1.0.27" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | 417 | [[package]] 418 | name = "serde_derive" 419 | version = "1.0.27" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | dependencies = [ 422 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 423 | "serde_derive_internals 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 425 | ] 426 | 427 | [[package]] 428 | name = "serde_derive_internals" 429 | version = "0.19.0" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | dependencies = [ 432 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 433 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 434 | ] 435 | 436 | [[package]] 437 | name = "serde_json" 438 | version = "1.0.9" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | dependencies = [ 441 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 442 | "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 443 | "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", 444 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 445 | ] 446 | 447 | [[package]] 448 | name = "skeptic" 449 | version = "0.9.0" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | dependencies = [ 452 | "pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)", 453 | "tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 454 | ] 455 | 456 | [[package]] 457 | name = "stable_deref_trait" 458 | version = "1.0.0" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | 461 | [[package]] 462 | name = "syn" 463 | version = "0.11.11" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | dependencies = [ 466 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 469 | ] 470 | 471 | [[package]] 472 | name = "synom" 473 | version = "0.11.3" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | dependencies = [ 476 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 477 | ] 478 | 479 | [[package]] 480 | name = "tantivy" 481 | version = "0.5.0" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | dependencies = [ 484 | "atomicwrites 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 485 | "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 486 | "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 487 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 488 | "chan 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 489 | "combine 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 490 | "crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 491 | "downcast 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", 492 | "error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 493 | "fst 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 494 | "futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 495 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 496 | "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", 497 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 498 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 499 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 500 | "lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)", 501 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 502 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 503 | "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "regex 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 505 | "rust-stemmers 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 506 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 507 | "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 508 | "serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 509 | "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 510 | "tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 511 | "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 512 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "tinysegmenter 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 514 | "uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "tantivy-bench" 520 | version = "0.1.0" 521 | dependencies = [ 522 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 523 | "serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 524 | "serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", 525 | "tantivy 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 526 | ] 527 | 528 | [[package]] 529 | name = "tempdir" 530 | version = "0.3.6" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | dependencies = [ 533 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 534 | "remove_dir_all 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 535 | ] 536 | 537 | [[package]] 538 | name = "tempfile" 539 | version = "2.2.0" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | dependencies = [ 542 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 543 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 544 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 545 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 546 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 547 | ] 548 | 549 | [[package]] 550 | name = "thread_local" 551 | version = "0.3.5" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | dependencies = [ 554 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 555 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 556 | ] 557 | 558 | [[package]] 559 | name = "time" 560 | version = "0.1.39" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | dependencies = [ 563 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 564 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 565 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 566 | ] 567 | 568 | [[package]] 569 | name = "tinysegmenter" 570 | version = "0.1.0" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | dependencies = [ 573 | "lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 574 | "maplit 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 575 | ] 576 | 577 | [[package]] 578 | name = "unicode-xid" 579 | version = "0.0.4" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | 582 | [[package]] 583 | name = "unreachable" 584 | version = "1.0.0" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | dependencies = [ 587 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 588 | ] 589 | 590 | [[package]] 591 | name = "utf8-ranges" 592 | version = "1.0.0" 593 | source = "registry+https://github.com/rust-lang/crates.io-index" 594 | 595 | [[package]] 596 | name = "uuid" 597 | version = "0.5.1" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | dependencies = [ 600 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 602 | ] 603 | 604 | [[package]] 605 | name = "void" 606 | version = "1.0.2" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | 609 | [[package]] 610 | name = "winapi" 611 | version = "0.2.8" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | 614 | [[package]] 615 | name = "winapi" 616 | version = "0.3.4" 617 | source = "registry+https://github.com/rust-lang/crates.io-index" 618 | dependencies = [ 619 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 620 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 621 | ] 622 | 623 | [[package]] 624 | name = "winapi-build" 625 | version = "0.1.1" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | 628 | [[package]] 629 | name = "winapi-i686-pc-windows-gnu" 630 | version = "0.4.0" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | 633 | [[package]] 634 | name = "winapi-x86_64-pc-windows-gnu" 635 | version = "0.4.0" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | 638 | [metadata] 639 | "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" 640 | "checksum ascii 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae7d751998c189c1d4468cf0a39bb2eae052a9c58d50ebb3b9591ee3813ad50" 641 | "checksum atomicwrites 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "7adff0f3666b56fb01ce4caea58193a26d97d384587a10e950e0e9c857de3cca" 642 | "checksum backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbbf59b1c43eefa8c3ede390fcc36820b4999f7914104015be25025e0d62af2" 643 | "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" 644 | "checksum bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9bf6104718e80d7b26a68fdbacff3481cfc05df670821affc7e9cbc1884400c" 645 | "checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f" 646 | "checksum bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4f67931368edf3a9a51d29886d245f1c3db2f1ef0dcc9e35ff70341b78c10d23" 647 | "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" 648 | "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" 649 | "checksum byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "652805b7e73fada9d85e9a6682a4abd490cb52d96aeecc12e33a0de34dfd0d23" 650 | "checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0" 651 | "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" 652 | "checksum chan 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "9af7c487bb99c929ba2715b1a3a7bf45f5062bf5b6eae5d32b292a96c5865172" 653 | "checksum combine 2.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1645a65a99c7c8d345761f4b75a6ffe5be3b3b27a93ee731fccc5050ba6be97c" 654 | "checksum crossbeam 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "24ce9782d4d5c53674646a6a4c1863a21a8fc0cb649b3c94dfc16e45071dea19" 655 | "checksum downcast 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6c6fe31318b6ef21166c8e839e680238eb16f875849d597544eead7ec882eed3" 656 | "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" 657 | "checksum either 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "740178ddf48b1a9e878e6d6509a1442a2d42fd2928aae8e7a6f8a36fb01981b3" 658 | "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" 659 | "checksum fs2 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bcd414e5a1a979b931bb92f41b7a54106d3f6d2e6c253e9ce943b7cd468251ef" 660 | "checksum fst 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "11e21bdd626be09f2bd66b44dbb724538176aa3549f3109208db35538dd2699f" 661 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 662 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 663 | "checksum futures 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "0bab5b5e94f5c31fc764ba5dd9ad16568aae5d4825538c01d6bca680c9bf94a7" 664 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 665 | "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" 666 | "checksum getopts 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)" = "b900c08c1939860ce8b54dc6a89e26e00c04c380fd0e09796799bd7f12861e05" 667 | "checksum itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4833d6978da405305126af4ac88569b5d71ff758581ce5a987dbfa3755f694fc" 668 | "checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" 669 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 670 | "checksum lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "cf186d1a8aa5f5bee5fd662bc9c1b949e0259e1bcc379d1f006847b0080c7417" 671 | "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" 672 | "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" 673 | "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" 674 | "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 675 | "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" 676 | "checksum lz4 1.22.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fe55d2ebbc2e4fc987e6fbfc13f416d97b06d06e50bc1124d613aa790842f80c" 677 | "checksum lz4-sys 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a59044c3ba3994f3d2aa2270ddd6c5947922219501e67efde5604d36aad462b5" 678 | "checksum maplit 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "22593015b8df7747861c69c28acd32589fb96c1686369f3b661d12e409d4cf65" 679 | "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" 680 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 681 | "checksum memmap 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69253224aa10070855ea8fe9dbe94a03fc2b1d7930bb340c9e586a7513716fea" 682 | "checksum nix 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a2c5afeb0198ec7be8569d666644b574345aad2e95a53baf3a532da3e0f3fb32" 683 | "checksum num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)" = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" 684 | "checksum num-traits 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e7de20f146db9d920c45ee8ed8f71681fd9ade71909b48c3acbd766aa504cf10" 685 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 686 | "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" 687 | "checksum pulldown-cmark 0.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1058d7bb927ca067656537eec4e02c2b4b70eaaa129664c5b90c111e20326f41" 688 | "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" 689 | "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" 690 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 691 | "checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" 692 | "checksum regex 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "5be5347bde0c48cfd8c3fdc0766cdfe9d8a755ef84d620d6794c778c91de8b2b" 693 | "checksum regex-syntax 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8e931c58b93d86f080c734bfd2bce7dd0079ae2331235818133c8be7f422e20e" 694 | "checksum remove_dir_all 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5d2f806b0fcdabd98acd380dc8daef485e22bcb7cddc811d1337967f2528cf5" 695 | "checksum rust-stemmers 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8398e39ef1740238f87fcc4171fccc2231ba7ef1ecd64075d77feb0041927fc7" 696 | "checksum rustc-demangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f312457f8a4fa31d3581a6f423a70d6c33a10b95291985df55f1ff670ec10ce8" 697 | "checksum serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "db99f3919e20faa51bb2996057f5031d8685019b5a06139b1ce761da671b8526" 698 | "checksum serde_derive 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "f4ba7591cfe93755e89eeecdbcc668885624829b020050e6aec99c2a03bd3fd0" 699 | "checksum serde_derive_internals 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e03f1c9530c3fb0a0a5c9b826bdd9246a5921ae995d75f512ac917fc4dd55b5" 700 | "checksum serde_json 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c9db7266c7d63a4c4b7fe8719656ccdd51acf1bed6124b174f933b009fb10bcb" 701 | "checksum skeptic 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dd7d8dc1315094150052d0ab767840376335a98ac66ef313ff911cdf439a5b69" 702 | "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" 703 | "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" 704 | "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" 705 | "checksum tantivy 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "dcaf44ed828eea2da561b2bb5bb490e9dc68ad375609330e512818c143cc9d7c" 706 | "checksum tempdir 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f73eebdb68c14bcb24aef74ea96079830e7fa7b31a6106e42ea7ee887c1e134e" 707 | "checksum tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11ce2fe9db64b842314052e2421ac61a73ce41b898dc8e3750398b219c5fc1e0" 708 | "checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" 709 | "checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" 710 | "checksum tinysegmenter 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7e767ff68150da3d23c88482da07abd6532e2e928093b80e79dc4818119bbc36" 711 | "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" 712 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 713 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 714 | "checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22" 715 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 716 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 717 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 718 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 719 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 720 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 721 | -------------------------------------------------------------------------------- /benchmark/Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "ansi_term" 3 | version = "0.10.2" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | 6 | [[package]] 7 | name = "atty" 8 | version = "0.2.6" 9 | source = "registry+https://github.com/rust-lang/crates.io-index" 10 | dependencies = [ 11 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 12 | "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 13 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 14 | ] 15 | 16 | [[package]] 17 | name = "backtrace" 18 | version = "0.3.5" 19 | source = "registry+https://github.com/rust-lang/crates.io-index" 20 | dependencies = [ 21 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 24 | "rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 25 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 26 | ] 27 | 28 | [[package]] 29 | name = "backtrace-sys" 30 | version = "0.1.16" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | dependencies = [ 33 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 34 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 35 | ] 36 | 37 | [[package]] 38 | name = "benchmark" 39 | version = "0.1.0" 40 | dependencies = [ 41 | "bzip2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "clap 2.30.0 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "csv 1.0.0-beta.5 (registry+https://github.com/rust-lang/crates.io-index)", 44 | "quick-xml 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 45 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "scraper 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "stopwatch 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 48 | ] 49 | 50 | [[package]] 51 | name = "bitflags" 52 | version = "0.7.0" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | 55 | [[package]] 56 | name = "bitflags" 57 | version = "1.0.1" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | 60 | [[package]] 61 | name = "bzip2" 62 | version = "0.3.2" 63 | source = "registry+https://github.com/rust-lang/crates.io-index" 64 | dependencies = [ 65 | "bzip2-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 67 | ] 68 | 69 | [[package]] 70 | name = "bzip2-sys" 71 | version = "0.1.6" 72 | source = "registry+https://github.com/rust-lang/crates.io-index" 73 | dependencies = [ 74 | "cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 75 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 76 | ] 77 | 78 | [[package]] 79 | name = "cc" 80 | version = "1.0.4" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | 83 | [[package]] 84 | name = "cfg-if" 85 | version = "0.1.2" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | 88 | [[package]] 89 | name = "clap" 90 | version = "2.30.0" 91 | source = "registry+https://github.com/rust-lang/crates.io-index" 92 | dependencies = [ 93 | "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 96 | "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 97 | "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 98 | "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 99 | "vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 100 | ] 101 | 102 | [[package]] 103 | name = "cssparser" 104 | version = "0.13.7" 105 | source = "registry+https://github.com/rust-lang/crates.io-index" 106 | dependencies = [ 107 | "cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 108 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 109 | "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 110 | "procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 111 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 112 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 113 | ] 114 | 115 | [[package]] 116 | name = "cssparser-macros" 117 | version = "0.3.0" 118 | source = "registry+https://github.com/rust-lang/crates.io-index" 119 | dependencies = [ 120 | "phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 121 | "procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 122 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 123 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 124 | ] 125 | 126 | [[package]] 127 | name = "csv" 128 | version = "1.0.0-beta.5" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | dependencies = [ 131 | "csv-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 133 | ] 134 | 135 | [[package]] 136 | name = "csv-core" 137 | version = "0.1.4" 138 | source = "registry+https://github.com/rust-lang/crates.io-index" 139 | dependencies = [ 140 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 141 | ] 142 | 143 | [[package]] 144 | name = "debug_unreachable" 145 | version = "0.1.1" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | dependencies = [ 148 | "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 149 | ] 150 | 151 | [[package]] 152 | name = "ego-tree" 153 | version = "0.2.0" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | 156 | [[package]] 157 | name = "encoding_rs" 158 | version = "0.7.2" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | dependencies = [ 161 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 162 | ] 163 | 164 | [[package]] 165 | name = "failure" 166 | version = "0.1.1" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | dependencies = [ 169 | "backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 170 | "failure_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 171 | ] 172 | 173 | [[package]] 174 | name = "failure_derive" 175 | version = "0.1.1" 176 | source = "registry+https://github.com/rust-lang/crates.io-index" 177 | dependencies = [ 178 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 179 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 180 | "synstructure 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 181 | ] 182 | 183 | [[package]] 184 | name = "fnv" 185 | version = "1.0.6" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | 188 | [[package]] 189 | name = "fuchsia-zircon" 190 | version = "0.3.3" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | dependencies = [ 193 | "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 194 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 195 | ] 196 | 197 | [[package]] 198 | name = "fuchsia-zircon-sys" 199 | version = "0.3.3" 200 | source = "registry+https://github.com/rust-lang/crates.io-index" 201 | 202 | [[package]] 203 | name = "futf" 204 | version = "0.1.3" 205 | source = "registry+https://github.com/rust-lang/crates.io-index" 206 | dependencies = [ 207 | "debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 208 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 209 | ] 210 | 211 | [[package]] 212 | name = "html5ever" 213 | version = "0.21.0" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | dependencies = [ 216 | "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 217 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 218 | "markup5ever 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 219 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 221 | ] 222 | 223 | [[package]] 224 | name = "lazy_static" 225 | version = "0.2.11" 226 | source = "registry+https://github.com/rust-lang/crates.io-index" 227 | 228 | [[package]] 229 | name = "libc" 230 | version = "0.2.36" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | 233 | [[package]] 234 | name = "log" 235 | version = "0.3.9" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | dependencies = [ 238 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 239 | ] 240 | 241 | [[package]] 242 | name = "log" 243 | version = "0.4.1" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | dependencies = [ 246 | "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 247 | ] 248 | 249 | [[package]] 250 | name = "mac" 251 | version = "0.1.1" 252 | source = "registry+https://github.com/rust-lang/crates.io-index" 253 | 254 | [[package]] 255 | name = "markup5ever" 256 | version = "0.6.2" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | dependencies = [ 259 | "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 260 | "phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 261 | "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 262 | "string_cache 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 263 | "string_cache_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 264 | "tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 265 | ] 266 | 267 | [[package]] 268 | name = "matches" 269 | version = "0.1.6" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | 272 | [[package]] 273 | name = "memchr" 274 | version = "2.0.1" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | dependencies = [ 277 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 278 | ] 279 | 280 | [[package]] 281 | name = "num" 282 | version = "0.1.41" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | dependencies = [ 285 | "num-bigint 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 286 | "num-complex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 287 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 288 | "num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)", 289 | "num-rational 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 290 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 291 | ] 292 | 293 | [[package]] 294 | name = "num-bigint" 295 | version = "0.1.41" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | dependencies = [ 298 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 299 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 300 | "rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", 301 | "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 302 | ] 303 | 304 | [[package]] 305 | name = "num-complex" 306 | version = "0.1.41" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | dependencies = [ 309 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 310 | "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 311 | ] 312 | 313 | [[package]] 314 | name = "num-integer" 315 | version = "0.1.35" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | dependencies = [ 318 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 319 | ] 320 | 321 | [[package]] 322 | name = "num-iter" 323 | version = "0.1.34" 324 | source = "registry+https://github.com/rust-lang/crates.io-index" 325 | dependencies = [ 326 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 327 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 328 | ] 329 | 330 | [[package]] 331 | name = "num-rational" 332 | version = "0.1.41" 333 | source = "registry+https://github.com/rust-lang/crates.io-index" 334 | dependencies = [ 335 | "num-bigint 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 338 | "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", 339 | ] 340 | 341 | [[package]] 342 | name = "num-traits" 343 | version = "0.1.42" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | 346 | [[package]] 347 | name = "phf" 348 | version = "0.7.21" 349 | source = "registry+https://github.com/rust-lang/crates.io-index" 350 | dependencies = [ 351 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 352 | ] 353 | 354 | [[package]] 355 | name = "phf_codegen" 356 | version = "0.7.21" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | dependencies = [ 359 | "phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 360 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 361 | ] 362 | 363 | [[package]] 364 | name = "phf_generator" 365 | version = "0.7.21" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | dependencies = [ 368 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 369 | "rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)", 370 | ] 371 | 372 | [[package]] 373 | name = "phf_shared" 374 | version = "0.7.21" 375 | source = "registry+https://github.com/rust-lang/crates.io-index" 376 | dependencies = [ 377 | "siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 378 | ] 379 | 380 | [[package]] 381 | name = "precomputed-hash" 382 | version = "0.1.1" 383 | source = "registry+https://github.com/rust-lang/crates.io-index" 384 | 385 | [[package]] 386 | name = "procedural-masquerade" 387 | version = "0.1.5" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | 390 | [[package]] 391 | name = "quick-xml" 392 | version = "0.11.0" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | dependencies = [ 395 | "encoding_rs 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 396 | "failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 397 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 398 | ] 399 | 400 | [[package]] 401 | name = "quote" 402 | version = "0.3.15" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | 405 | [[package]] 406 | name = "rand" 407 | version = "0.3.20" 408 | source = "registry+https://github.com/rust-lang/crates.io-index" 409 | dependencies = [ 410 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 411 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 412 | ] 413 | 414 | [[package]] 415 | name = "rand" 416 | version = "0.4.2" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | dependencies = [ 419 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 420 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 421 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 422 | ] 423 | 424 | [[package]] 425 | name = "redox_syscall" 426 | version = "0.1.37" 427 | source = "registry+https://github.com/rust-lang/crates.io-index" 428 | 429 | [[package]] 430 | name = "redox_termios" 431 | version = "0.1.1" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | dependencies = [ 434 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 435 | ] 436 | 437 | [[package]] 438 | name = "rustc-demangle" 439 | version = "0.1.5" 440 | source = "registry+https://github.com/rust-lang/crates.io-index" 441 | 442 | [[package]] 443 | name = "rustc-serialize" 444 | version = "0.3.24" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | 447 | [[package]] 448 | name = "scraper" 449 | version = "0.5.0" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | dependencies = [ 452 | "cssparser 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", 453 | "ego-tree 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 454 | "html5ever 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", 455 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 456 | "selectors 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", 457 | "tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 458 | ] 459 | 460 | [[package]] 461 | name = "selectors" 462 | version = "0.18.0" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | dependencies = [ 465 | "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 466 | "cssparser 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)", 467 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 468 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 469 | "phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 470 | "phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 471 | "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 472 | "smallvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 473 | ] 474 | 475 | [[package]] 476 | name = "serde" 477 | version = "1.0.27" 478 | source = "registry+https://github.com/rust-lang/crates.io-index" 479 | 480 | [[package]] 481 | name = "siphasher" 482 | version = "0.2.2" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | 485 | [[package]] 486 | name = "smallvec" 487 | version = "0.3.3" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | 490 | [[package]] 491 | name = "stopwatch" 492 | version = "0.0.7" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | dependencies = [ 495 | "num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 496 | ] 497 | 498 | [[package]] 499 | name = "string_cache" 500 | version = "0.6.2" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | dependencies = [ 503 | "debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 505 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 506 | "precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 507 | "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", 508 | "string_cache_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 509 | "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 510 | ] 511 | 512 | [[package]] 513 | name = "string_cache_codegen" 514 | version = "0.4.0" 515 | source = "registry+https://github.com/rust-lang/crates.io-index" 516 | dependencies = [ 517 | "phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 518 | "phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)", 519 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 520 | "string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 521 | ] 522 | 523 | [[package]] 524 | name = "string_cache_shared" 525 | version = "0.3.0" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | 528 | [[package]] 529 | name = "strsim" 530 | version = "0.7.0" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | 533 | [[package]] 534 | name = "syn" 535 | version = "0.11.11" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | dependencies = [ 538 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 539 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 541 | ] 542 | 543 | [[package]] 544 | name = "synom" 545 | version = "0.11.3" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | dependencies = [ 548 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 549 | ] 550 | 551 | [[package]] 552 | name = "synstructure" 553 | version = "0.6.1" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | dependencies = [ 556 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 557 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 558 | ] 559 | 560 | [[package]] 561 | name = "tendril" 562 | version = "0.4.0" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | dependencies = [ 565 | "futf 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 566 | "mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 567 | "utf-8 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 568 | ] 569 | 570 | [[package]] 571 | name = "termion" 572 | version = "1.5.1" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | dependencies = [ 575 | "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)", 576 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 577 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 578 | ] 579 | 580 | [[package]] 581 | name = "textwrap" 582 | version = "0.9.0" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | dependencies = [ 585 | "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 586 | ] 587 | 588 | [[package]] 589 | name = "unicode-width" 590 | version = "0.1.4" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | 593 | [[package]] 594 | name = "unicode-xid" 595 | version = "0.0.4" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | 598 | [[package]] 599 | name = "unreachable" 600 | version = "0.1.1" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | dependencies = [ 603 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 604 | ] 605 | 606 | [[package]] 607 | name = "utf-8" 608 | version = "0.7.2" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | 611 | [[package]] 612 | name = "vec_map" 613 | version = "0.8.0" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | 616 | [[package]] 617 | name = "void" 618 | version = "1.0.2" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | 621 | [[package]] 622 | name = "winapi" 623 | version = "0.3.4" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | dependencies = [ 626 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 627 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 628 | ] 629 | 630 | [[package]] 631 | name = "winapi-i686-pc-windows-gnu" 632 | version = "0.4.0" 633 | source = "registry+https://github.com/rust-lang/crates.io-index" 634 | 635 | [[package]] 636 | name = "winapi-x86_64-pc-windows-gnu" 637 | version = "0.4.0" 638 | source = "registry+https://github.com/rust-lang/crates.io-index" 639 | 640 | [metadata] 641 | "checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" 642 | "checksum atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8352656fd42c30a0c3c89d26dea01e3b77c0ab2af18230835c15e2e13cd51859" 643 | "checksum backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbbf59b1c43eefa8c3ede390fcc36820b4999f7914104015be25025e0d62af2" 644 | "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" 645 | "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" 646 | "checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" 647 | "checksum bzip2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3eafc42c44e0d827de6b1c131175098fe7fb53b8ce8a47e65cb3ea94688be24" 648 | "checksum bzip2-sys 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2c5162604199bbb17690ede847eaa6120a3f33d5ab4dcc8e7c25b16d849ae79b" 649 | "checksum cc 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "deaf9ec656256bb25b404c51ef50097207b9cbb29c933d31f92cae5a8a0ffee0" 650 | "checksum cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de" 651 | "checksum clap 2.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1c07b9257a00f3fc93b7f3c417fc15607ec7a56823bc2c37ec744e266387de5b" 652 | "checksum cssparser 0.13.7 (registry+https://github.com/rust-lang/crates.io-index)" = "ef6124306e5ebc5ab11891d063aeafdd0cdc308079b708c8b566125f3680292b" 653 | "checksum cssparser-macros 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "079adec4af52bb5275eadd004292028c79eb3c5f5b4ee8086a36d4197032f6df" 654 | "checksum csv 1.0.0-beta.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e7a9e063dcebdb56c306f23e672bfd31df3da8ec5f6d696b35f2c29c2a9572f0" 655 | "checksum csv-core 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4dd8e6d86f7ba48b4276ef1317edc8cc36167546d8972feb4a2b5fec0b374105" 656 | "checksum debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3" 657 | "checksum ego-tree 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44ac6c5674b452300939fba70fd54e24908b72ecc27aa58b3f07b06bc804bd2d" 658 | "checksum encoding_rs 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98fd0f24d1fb71a4a6b9330c8ca04cbd4e7cc5d846b54ca74ff376bc7c9f798d" 659 | "checksum failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "934799b6c1de475a012a02dab0ace1ace43789ee4b99bcfbf1a2e3e8ced5de82" 660 | "checksum failure_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cdda555bb90c9bb67a3b670a0f42de8e73f5981524123ad8578aafec8ddb8b" 661 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 662 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 663 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 664 | "checksum futf 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "51f93f3de6ba1794dcd5810b3546d004600a59a98266487c8407bc4b24e398f3" 665 | "checksum html5ever 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba3a1fd1857a714d410c191364c5d7bf8a6487c0ab5575146d37dd7eb17ef523" 666 | "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" 667 | "checksum libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "1e5d97d6708edaa407429faa671b942dc0f2727222fb6b6539bf1db936e4b121" 668 | "checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" 669 | "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" 670 | "checksum mac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 671 | "checksum markup5ever 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2cf89d3e0486c32c9d99521455ddf9a438910a1ce2bd376936086edc15dff5fc" 672 | "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" 673 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 674 | "checksum num 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4083e14b542ea3eb9b5f33ff48bd373a92d78687e74f4cc0a30caeb754f0ca" 675 | "checksum num-bigint 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "bdc1494b5912f088f260b775799468d9b9209ac60885d8186a547a0476289e23" 676 | "checksum num-complex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "58de7b4bf7cf5dbecb635a5797d489864eadd03b107930cbccf9e0fd7428b47c" 677 | "checksum num-integer 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba" 678 | "checksum num-iter 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01" 679 | "checksum num-rational 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "0b950f75e042fdd710460084d19c8efdcd72d65183ead8ecd04b90483f5a55d2" 680 | "checksum num-traits 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "9936036cc70fe4a8b2d338ab665900323290efb03983c86cbe235ae800ad8017" 681 | "checksum phf 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "cb325642290f28ee14d8c6201159949a872f220c62af6e110a56ea914fbe42fc" 682 | "checksum phf_codegen 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "d62594c0bb54c464f633175d502038177e90309daf2e0158be42ed5f023ce88f" 683 | "checksum phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6b07ffcc532ccc85e3afc45865469bf5d9e4ef5bfcf9622e3cfe80c2d275ec03" 684 | "checksum phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "07e24b0ca9643bdecd0632f2b3da6b1b89bbb0030e0b992afc1113b23a7bc2f2" 685 | "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 686 | "checksum procedural-masquerade 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dc1bcafee1590f81acb329ae45ec627b318123f085153913620316ae9a144b2a" 687 | "checksum quick-xml 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "256f488c59a125272a141529c3886b59eb97ae21e097107911a61e4ae5647ed8" 688 | "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" 689 | "checksum rand 0.3.20 (registry+https://github.com/rust-lang/crates.io-index)" = "512870020642bb8c221bf68baa1b2573da814f6ccfe5c9699b1c303047abe9b1" 690 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 691 | "checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" 692 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 693 | "checksum rustc-demangle 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e" 694 | "checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" 695 | "checksum scraper 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aea5dfa1e892e5456ee7f2fa09bd5942e8131957537cf881fb4ff42cb3e82eba" 696 | "checksum selectors 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3c89b1c6a3c029c82263f7dd2d44d0005ee7374eb09e254ab59dede4353a8c0" 697 | "checksum serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)" = "db99f3919e20faa51bb2996057f5031d8685019b5a06139b1ce761da671b8526" 698 | "checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" 699 | "checksum smallvec 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4f8266519bc1d17d0b5b16f6c21295625d562841c708f6376f49028a43e9c11e" 700 | "checksum stopwatch 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3d04b5ebc78da44d3a456319d8bc2783e7d8cc7ccbb5cb4dc3f54afbd93bf728" 701 | "checksum string_cache 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "413fc7852aeeb5472f1986ef755f561ddf0c789d3d796e65f0b6fe293ecd4ef8" 702 | "checksum string_cache_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "479cde50c3539481f33906a387f2bd17c8e87cb848c35b6021d41fb81ff9b4d7" 703 | "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" 704 | "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" 705 | "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" 706 | "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" 707 | "checksum synstructure 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3a761d12e6d8dcb4dcf952a7a89b475e3a9d69e4a69307e01a470977642914bd" 708 | "checksum tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9de21546595a0873061940d994bbbc5c35f024ae4fd61ec5c5b159115684f508" 709 | "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" 710 | "checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" 711 | "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" 712 | "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" 713 | "checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" 714 | "checksum utf-8 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1262dfab4c30d5cb7c07026be00ee343a6cf5027fdc0104a9160f354e5db75c" 715 | "checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" 716 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 717 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 718 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 719 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 720 | --------------------------------------------------------------------------------