使用文本流,我使用 aho_corasick crate,它允许在线性时间内有效地替换流文本上的许多字符串。它的流接口主要由以下功能组成:
aho_corasick::ahocorasick::AhoCorasick
pub fn stream_replace_all<R, W, B>(&self, rdr: R, wtr: W, replace_with: &[B]) -> io::Result<()>
where
R: io::Read,
W: io::Write,
B: AsRef<[u8]>,
现在,我想对每个块应用另一个处理。我的图书馆也有一个 Reader 和一个 Writer 并应用自己的处理(尽管我可以根据需要更改界面)
问题是,是否有可能以某种方式在管道中执行这两个函数,以便一个块被处理两次?换句话说,我需要有一个 step1 的 Writer 才能成为 step2 的 Reader
我已经尝试在我的库中添加一个
FnMut
参数以增加对每个块进行后处理或预处理的可能性,但我不知道如何使用上面的 AhoCorasick 函数。