有一种方法可以命名Rust中的匹配模式的子表达?

问题描述 投票:0回答:1
在生锈图案匹配中,是否有一种方法可以标记模式的子表达,以便可以重复使用该名称? 考虑:

fn parse(all_toks : Vec<Token>) -> ParseResult<Form> { match all_toks { [ Token::Key(String::from("ALL")), Token::Id(a), Token::Key(String::from(".")), toks @ .. ] => { let res = parse(toks); let mkq = make_quant( String::from("ALL"), a); apfst(mkq, res) } } }
再次在
String::from("ALL")

行中再次键入

let mkq =
,是否有一种方法使匹配模式是字面的和命名的变量? 类似(伪代码):
    match all_toks {
        [
            Token::Key(let x = String::from("ALL")),
            Token::Id(a),
            Token::Key(String::from(".")),
            toks @ ..
        ] => {

or

match all_toks { [ Token::Key(x), Token::Id(a), Token::Key(String::from(".")), toks @ .. ] where (x==String::from("ALL")) => {

	
一般,是的:这就是
rust pattern-matching
1个回答
0
投票
模式!

Token::Key(x @ "ALL")

即您用于
..

toks

是一种模式:它只是一种与所有内容相匹配的模式(a resttattern
)。
,如果像您的代码一样,您的类型是
String而不是&str

,那么您有一个不同的问题:模式无法匹配(当前),而

String

不是模式中的有效语法。因此,您不能使用模式。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.