我已经定义了这样的结构和方法:
struct Lexer<'a> {
input: String,
pos: CharIndices<'a>,
next_pos: Peekable<CharIndices<'a>>,
ch: char,
}
impl<'a> Lexer<'a> {
pub fn new(input: String) -> Lexer<'a> {
let mut lexer = Lexer<'a> {
input,
pos: input.char_indices(),
next_pos: input.char_indices().peekable(),
ch: char::from(0 as u8),
};
lexer
}
}
编译时出现错误
error: expected `:`, found `>`
--> src/lexer/mod.rs:15:33
|
15 | let mut lexer = Lexer<'a> {
| ^ expected `:`
但是,按照要求进行操作并将有问题的行更改为let mut lexer = Lexer<'a:> {
是没有意义的,重新编译可以确认这确实是不正确的。
error: expected `while`, `for`, `loop` or `{` after a label
--> src/lexer/mod.rs:15:34
|
15 | let mut lexer = Lexer<'a:> {
| ^ expected `while`, `for`, `loop` or `{` after a label
我不确定为什么编译器会抱怨,而我可以说,生命周期表示法对我来说似乎还不错。
答案 0 :(得分:0)
我刚刚意识到,构造函数不需要生存期。
正确的符号是
let mut lexer = Lexer {
不是
let mut lexer = Lexer<'a> {