diff --git a/src/query/boolean_query/boolean_query.rs b/src/query/boolean_query/boolean_query.rs index 20ac200f70..3becc12771 100644 --- a/src/query/boolean_query/boolean_query.rs +++ b/src/query/boolean_query/boolean_query.rs @@ -1,3 +1,5 @@ +use std::mem; + use super::boolean_weight::BooleanWeight; use crate::query::{EnableScoring, Occur, Query, SumCombiner, TermQuery, Weight}; use crate::schema::{IndexRecordOption, Term}; @@ -254,8 +256,13 @@ impl BooleanQuery { } /// Deconstructed view of the clauses making up this query. - pub fn clauses(&self) -> &[(Occur, Box)] { - &self.subqueries[..] + pub fn clauses(&self) -> impl Iterator)> { + self.subqueries.iter() + } + + /// Take the clauses making up this query for reuse. + pub fn take_clauses(&mut self) -> impl Iterator)> { + mem::take(&mut self.subqueries).into_iter() } }