[−][src]Module streamson_lib::handler::indexer
Handler which stores indexes where matched data are kept. The data should be within <start_idx, end_idx) range
Example
use streamson_lib::{handler, matcher, strategy}; use std::sync::{Arc, Mutex}; let indexer_handler = Arc::new(Mutex::new(handler::Indexer::new().set_use_path(true))); let matcher = matcher::Simple::new(r#"{"users"}[]{"name"}"#).unwrap(); let mut trigger = strategy::Trigger::new(); // Set the matcher for trigger trigger.add_matcher(Box::new(matcher), &[indexer_handler.clone()]); for input in vec![ br#"{"users": [{"id": 1, "name": "first"}, {"#.to_vec(), br#""id": 2, "name": "second}]}"#.to_vec(), ] { trigger.process(&input).unwrap(); let mut guard = indexer_handler.lock().unwrap(); while let Some((path, output)) = guard.pop() { // Do something with the data println!("{} ({:?})", path.unwrap(), output); } }
Structs
Indexer | Indexer handler responsible for storing index of the matches |