Make creating AllAstNodeIter explicit.
This is to remove the ambiguity between calling iter on the specific structs like Document and calling iter on an AstNode by having an explicitly-named function to create the iterator.
This commit is contained in:
parent
e1d85c6dc2
commit
4897952330
@ -90,12 +90,11 @@ impl<'r, 's> Iterator for AllAstNodeIter<'r, 's> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<'r, 's> IntoIterator for AstNode<'r, 's> {
|
||||
type Item = AstNode<'r, 's>;
|
||||
|
||||
type IntoIter = AllAstNodeIter<'r, 's>;
|
||||
|
||||
fn into_iter(self) -> Self::IntoIter {
|
||||
impl<'r, 's> AstNode<'r, 's> {
|
||||
/// Iterate all AST nodes.
|
||||
///
|
||||
/// This is different from the iter/into_iter functions which iterate a single level of the children. This iterates the entire tree including returning the root node itself.
|
||||
pub fn iter_all_ast_nodes(self) -> AllAstNodeIter<'r, 's> {
|
||||
AllAstNodeIter {
|
||||
root: Some(self),
|
||||
queue: VecDeque::new(),
|
||||
|
@ -143,7 +143,7 @@ fn document_org_source<'b, 'g, 'r, 's>(
|
||||
{
|
||||
// If there are radio targets in this document then we need to parse the entire document again with the knowledge of the radio targets.
|
||||
let all_radio_targets: Vec<&Vec<Object<'_>>> = Into::<AstNode>::into(&document)
|
||||
.into_iter()
|
||||
.iter_all_ast_nodes()
|
||||
.filter_map(|ast_node| {
|
||||
if let AstNode::RadioTarget(ast_node) = ast_node {
|
||||
Some(ast_node)
|
||||
|
@ -157,7 +157,7 @@ pub(crate) fn apply_in_buffer_settings<'g, 's, 'sf>(
|
||||
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
|
||||
pub(crate) fn apply_post_parse_in_buffer_settings<'g, 's, 'sf>(document: &mut Document<'s>) {
|
||||
document.category = Into::<AstNode>::into(&*document)
|
||||
.into_iter()
|
||||
.iter_all_ast_nodes()
|
||||
.filter_map(|ast_node| {
|
||||
if let AstNode::Keyword(ast_node) = ast_node {
|
||||
if ast_node.key.eq_ignore_ascii_case("category") {
|
||||
|
@ -13,7 +13,7 @@ pub use affiliated_keyword::AffiliatedKeyword;
|
||||
pub use affiliated_keyword::AffiliatedKeywordValue;
|
||||
pub use affiliated_keyword::AffiliatedKeywords;
|
||||
pub use affiliated_keyword::GetAffiliatedKeywords;
|
||||
pub(crate) use ast_node::AstNode;
|
||||
pub use ast_node::AstNode;
|
||||
pub use document::Document;
|
||||
pub use document::DocumentElement;
|
||||
pub use document::Heading;
|
||||
|
Loading…
Reference in New Issue
Block a user