是否可以在Rust中将模式作为函数参数传递?

时间:2018-04-29 20:58:03

标签: rust pattern-matching

我的想法是根据某些模式匹配过滤一些元素:

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函数的参数到达吗?我没有发现任何与此相关的内容,所以我猜答案是否定的。

如果可能,什么是正确的类型?

0 个答案:

没有答案