Skip to content

Commit 40f5954

Browse files
feat: 🎸 add life time (#87)
1 parent dad092e commit 40f5954

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

crates/recursive-parser/examples/plugin.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ impl<W: Write> SimplePrettier<W> {
3636
Self { level: 0, writer }
3737
}
3838
}
39-
impl<W: std::io::Write> VisitMut<std::io::Result<()>> for SimplePrettier<W> {
40-
fn visit_root(&mut self, root: &mut Root) -> std::io::Result<()> {
39+
impl<'a, W: std::io::Write> VisitMut<'a, std::io::Result<()>> for SimplePrettier<W> {
40+
fn visit_root(&mut self, root: &mut Root<'a>) -> std::io::Result<()> {
4141
for child in root.children.iter_mut() {
4242
match child {
4343
RuleOrAtRuleOrDecl::Rule(rule) => {
@@ -54,7 +54,7 @@ impl<W: std::io::Write> VisitMut<std::io::Result<()>> for SimplePrettier<W> {
5454
Ok(())
5555
}
5656

57-
fn visit_rule(&mut self, rule: &mut Rule) -> std::io::Result<()> {
57+
fn visit_rule(&mut self, rule: &mut Rule<'a>) -> std::io::Result<()> {
5858
self.writer.write(
5959
format!(
6060
"{}{} {}\n",
@@ -83,7 +83,7 @@ impl<W: std::io::Write> VisitMut<std::io::Result<()>> for SimplePrettier<W> {
8383
Ok(())
8484
}
8585

86-
fn visit_at_rule(&mut self, at_rule: &mut AtRule) -> std::io::Result<()> {
86+
fn visit_at_rule(&mut self, at_rule: &mut AtRule<'a>) -> std::io::Result<()> {
8787
write!(
8888
self.writer,
8989
"{}{} {} {}\n",
@@ -110,7 +110,7 @@ impl<W: std::io::Write> VisitMut<std::io::Result<()>> for SimplePrettier<W> {
110110
write!(self.writer, "{}{}\n", " ".repeat(self.level * 2), "}")
111111
}
112112

113-
fn visit_declaration(&mut self, decl: &mut Declaration) -> std::io::Result<()> {
113+
fn visit_declaration(&mut self, decl: &mut Declaration<'a>) -> std::io::Result<()> {
114114
write!(
115115
self.writer,
116116
"{}{} : {};",
@@ -124,8 +124,8 @@ impl<W: std::io::Write> VisitMut<std::io::Result<()>> for SimplePrettier<W> {
124124
#[derive(Default)]
125125
struct ReverseProp {}
126126

127-
impl VisitMut for ReverseProp {
128-
fn visit_root(&mut self, root: &mut Root) {
127+
impl<'a> VisitMut<'a> for ReverseProp {
128+
fn visit_root(&mut self, root: &mut Root<'a>) {
129129
root.children.iter_mut().for_each(|child| match child {
130130
RuleOrAtRuleOrDecl::Rule(rule) => {
131131
self.visit_rule(rule);
@@ -139,7 +139,7 @@ impl VisitMut for ReverseProp {
139139
});
140140
}
141141

142-
fn visit_rule(&mut self, rule: &mut Rule) {
142+
fn visit_rule(&mut self, rule: &mut Rule<'a>) {
143143
rule
144144
.children
145145
.iter_mut()
@@ -156,7 +156,7 @@ impl VisitMut for ReverseProp {
156156
});
157157
}
158158

159-
fn visit_at_rule(&mut self, at_rule: &mut AtRule) {
159+
fn visit_at_rule(&mut self, at_rule: &mut AtRule<'a>) {
160160
at_rule
161161
.children
162162
.iter_mut()
@@ -173,7 +173,7 @@ impl VisitMut for ReverseProp {
173173
});
174174
}
175175

176-
fn visit_declaration(&mut self, decl: &mut Declaration) {
176+
fn visit_declaration(&mut self, decl: &mut Declaration<'a>) {
177177
decl.prop.content = Cow::Owned(decl.prop.content.chars().rev().collect());
178178
}
179179
}

crates/recursive-parser/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ pub struct AstPrinter {
1111
}
1212

1313
impl AstPrinter {
14-
pub fn print(&mut self, root: &parser::Root) {
14+
pub fn print<'a>(&mut self, root: &'a parser::Root<'a>) {
1515
self.visit_root(root);
1616
}
1717
}
18-
impl Visit<()> for AstPrinter {
18+
impl<'a> Visit<'a, ()> for AstPrinter {
1919
fn visit_root(&mut self, root: &parser::Root) {
2020
println!(
2121
"{}Root@{:?}",
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
use crate::parser::{AtRule, Declaration, Root, Rule};
22

3-
pub trait Visit<R = ()> {
4-
fn visit_root(&mut self, _root: &Root) -> R;
5-
fn visit_rule(&mut self, _rule: &Rule) -> R;
6-
fn visit_at_rule(&mut self, _at_rule: &AtRule) -> R;
7-
fn visit_declaration(&mut self, _decl: &Declaration) -> R;
3+
pub trait Visit<'a, R = ()> {
4+
fn visit_root(&mut self, _root: &Root<'a>) -> R;
5+
fn visit_rule(&mut self, _rule: &Rule<'a>) -> R;
6+
fn visit_at_rule(&mut self, _at_rule: &AtRule<'a>) -> R;
7+
fn visit_declaration(&mut self, _decl: &Declaration<'a>) -> R;
88
}
99

10-
pub trait VisitMut<R = ()> {
11-
fn visit_root(&mut self, _root: &mut Root) -> R;
12-
fn visit_rule(&mut self, _rule: &mut Rule) -> R;
13-
fn visit_at_rule(&mut self, _at_rule: &mut AtRule) -> R;
14-
fn visit_declaration(&mut self, _decl: &mut Declaration) -> R;
10+
pub trait VisitMut<'a, R = ()> {
11+
fn visit_root(&mut self, _root: &mut Root<'a>) -> R;
12+
fn visit_rule(&mut self, _rule: &mut Rule<'a>) -> R;
13+
fn visit_at_rule(&mut self, _at_rule: &mut AtRule<'a>) -> R;
14+
fn visit_declaration(&mut self, _decl: &mut Declaration<'a>) -> R;
1515
}

0 commit comments

Comments
 (0)