【发布时间】:2020-04-22 17:49:40
【问题描述】:
我正在编写一个简单的分词器,它将从它的新函数中获取输入(希望将其删除以支持 REPL)并吐出与 css 语法相关的令牌。
这是一个例子:
#[derive(Debug)]
pub enum Token {
Selector,
LBrace,
RBrace,
Property,
Value,
}
#[derive(Debug)]
pub struct Tokenizer {
source: String,
tokens: Vec<(Token, String)>,
}
impl Tokenizer {
pub fn new(source: &str) -> Self {
let source = source.to_string();
for (i, c) in source.chars().enumerate() {
if c == '.' {
// This is where I am stuck.
}
}
Self {
source,
tokens: vec![],
}
}
}
fn main() {
let tokens = Tokenizer::new(".example{}");
println!("{:#?}", tokens);
}
现在我的问题是我想迭代下一个字符,直到遇到# 'space'、. 之一,但我不知道 rust 如何让我继续迭代直到满足条件。有没有办法调用序列中的下一个字符?
另外,如果您在我所采取的方向方面发现此代码有任何问题,请告诉我。谢谢。
这是rust playground的链接。
【问题讨论】: