couchbase_core/results/
search.rs1use crate::error;
20use crate::searchx::search_respreader::SearchRespReader;
21use crate::searchx::search_result::{FacetResult, MetaData, ResultHit};
22use futures::StreamExt;
23use futures_core::Stream;
24use std::collections::HashMap;
25
26pub struct SearchResultStream {
27 pub(crate) inner: SearchRespReader,
28 pub(crate) endpoint: String,
29}
30
31impl SearchResultStream {
32 pub fn endpoint(&self) -> &str {
33 &self.endpoint
34 }
35
36 pub fn facets(&self) -> error::Result<&HashMap<String, FacetResult>> {
37 self.inner.facets().map_err(|e| e.into())
38 }
39
40 pub fn metadata(&self) -> error::Result<&MetaData> {
41 self.inner.metadata().map_err(|e| e.into())
42 }
43}
44
45impl Stream for SearchResultStream {
46 type Item = error::Result<ResultHit>;
47
48 fn poll_next(
49 mut self: std::pin::Pin<&mut Self>,
50 cx: &mut std::task::Context<'_>,
51 ) -> std::task::Poll<Option<Self::Item>> {
52 self.inner.poll_next_unpin(cx).map_err(|e| e.into())
53 }
54}