summaryrefslogtreecommitdiffstats
path: root/crates/searcher/examples/search-stdin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/searcher/examples/search-stdin.rs')
-rw-r--r--crates/searcher/examples/search-stdin.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/crates/searcher/examples/search-stdin.rs b/crates/searcher/examples/search-stdin.rs
new file mode 100644
index 00000000..cd0bc4e8
--- /dev/null
+++ b/crates/searcher/examples/search-stdin.rs
@@ -0,0 +1,37 @@
+extern crate grep_regex;
+extern crate grep_searcher;
+
+use std::env;
+use std::error::Error;
+use std::io;
+use std::process;
+
+use grep_regex::RegexMatcher;
+use grep_searcher::sinks::UTF8;
+use grep_searcher::Searcher;
+
+fn main() {
+ if let Err(err) = example() {
+ eprintln!("{}", err);
+ process::exit(1);
+ }
+}
+
+fn example() -> Result<(), Box<dyn Error>> {
+ let pattern = match env::args().nth(1) {
+ Some(pattern) => pattern,
+ None => {
+ return Err(From::from(format!("Usage: search-stdin <pattern>")))
+ }
+ };
+ let matcher = RegexMatcher::new(&pattern)?;
+ Searcher::new().search_reader(
+ &matcher,
+ io::stdin(),
+ UTF8(|lnum, line| {
+ print!("{}:{}", lnum, line);
+ Ok(true)
+ }),
+ )?;
+ Ok(())
+}