5
我執行拉斯特解析器和空白的是,我想在match
模式重用的通用模式。如何在Rust中的變量中存儲模式?
此代碼:
let ch = ' ';
match ch {
' ' | '\n' | '\t' | '\r' => println!("whitespace"),
_ => println!("token"),
}
這將得到真正的重複,如果我需要保持對每次指定的空白模式。我想定義一次並重用它。我想要做類似於:
let whitespace = ' ' | '\n' | '\t' | '\r';
let ch = ' ';
match ch {
whitespace => println!("whitespace"),
_ => println!("token"),
}
編譯器不喜歡ws
賦值。它解釋|
爲二進制操作,而不是交替。
模式可以被存儲在某種程度上變量?有沒有更好或更習慣的方式來做到這一點?
在C這看起來像一個很好的候選人宏,不知道宏在魯斯特也去的方式...... – turbulencetoo
@turbulencetoo一個有趣的想法。在C中,宏是較低級別的文本操作,可能導致無效的源代碼。在Rust中,可以調用宏的地方數量是有限的,擴展必須在語法上有效。我不認爲這些模式是在一組有效的地方。但是,您始終可以使用某種類型的構建腳本來生成恰巧會生成有效Rust代碼的文本文件。 – Shepmaster