From d006fcbcfe1b8b97cb07b639a25a047ff66aaee1 Mon Sep 17 00:00:00 2001 From: RGBCube Date: Tue, 29 Jul 2025 16:54:24 +0000 Subject: [PATCH] treewide: specify lifetimes correctly (#77) don't overrestrict lifetimes, prefer `use<...>` to prevent `impl Trait` from capturing too much --- cstree/src/syntax/element.rs | 2 +- cstree/src/syntax/resolved.rs | 2 +- cstree/src/syntax/text.rs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cstree/src/syntax/element.rs b/cstree/src/syntax/element.rs index bef407a..27fbdc4 100644 --- a/cstree/src/syntax/element.rs +++ b/cstree/src/syntax/element.rs @@ -292,7 +292,7 @@ impl<'a, S: Syntax, D> SyntaxElementRef<'a, S, D> { /// Returns an iterator along the chain of parents of this node. #[inline] - pub fn ancestors(&self) -> impl Iterator> { + pub fn ancestors(&self) -> impl Iterator> + use<'a, S, D> { match self { NodeOrToken::Node(it) => it.ancestors(), NodeOrToken::Token(it) => it.parent().ancestors(), diff --git a/cstree/src/syntax/resolved.rs b/cstree/src/syntax/resolved.rs index 500d611..4c97301 100644 --- a/cstree/src/syntax/resolved.rs +++ b/cstree/src/syntax/resolved.rs @@ -713,7 +713,7 @@ impl<'a, S: Syntax, D> ResolvedElementRef<'a, S, D> { /// Returns an iterator along the chain of parents of this node. #[inline] - pub fn ancestors(&self) -> impl Iterator> { + pub fn ancestors(&self) -> impl Iterator> + use<'a, S, D> { match self { NodeOrToken::Node(it) => it.ancestors(), NodeOrToken::Token(it) => it.parent().ancestors(), diff --git a/cstree/src/syntax/text.rs b/cstree/src/syntax/text.rs index 5525e4e..67bb909 100644 --- a/cstree/src/syntax/text.rs +++ b/cstree/src/syntax/text.rs @@ -150,7 +150,7 @@ impl<'n, 'i, I: Resolver + ?Sized, S: Syntax, D> SyntaxText<'n, 'i, I, /// See also [`fold_chunks`](SyntaxText::fold_chunks) for folds that always succeed. pub fn try_fold_chunks(&self, init: T, mut f: F) -> Result where - F: FnMut(T, &str) -> Result, + F: FnMut(T, &'i str) -> Result, { self.tokens_with_ranges().try_fold(init, move |acc, (token, range)| { f(acc, &token.resolve_text(self.resolver)[range]) @@ -195,7 +195,7 @@ impl<'n, 'i, I: Resolver + ?Sized, S: Syntax, D> SyntaxText<'n, 'i, I, self.fold_chunks((), |(), chunk| f(chunk)) } - fn tokens_with_ranges(&self) -> impl Iterator, TextRange)> { + fn tokens_with_ranges(&self) -> impl Iterator, TextRange)> + use<'i, 'n, I, S, D> { let text_range = self.range; self.node .descendants_with_tokens()