我的想法是根据某些模式匹配过滤一些元素:
pub struct NodeHeading {
pub level: u32,
pub setext: bool,
}
pub enum NodeValue {
Document,
Heading(NodeHeading),
}
fn main() {
// let's suppose that nodes variable is already defined
let headings = find_headings(&nodes, ¿EXPRESSION_HERE?);
// for convenience, I won't declare lifetimes in this example
pub fn find_headings(
nodes: &Vec<&AstNode>,
expr: ¿WHAT_TYPE_HERE?,
) -> Vec<&AstNode> {
let headings: Vec<&AstNode> = nodes
.into_iter()
.filter(|x| match x {
expr => true,
_ => false,
})
.collect();
headings
}
}
这种模式可以动态使用吗?它可以作为find_headings
函数的参数到达吗?我没有发现任何与此相关的内容,所以我猜答案是否定的。
如果可能,什么是正确的类型?