Compiler errors 使用生存期表示法的奇怪编译错误:“quot;应为“:”,找到“>`&引用;
我定义了一个结构和方法,如下所示:Compiler errors 使用生存期表示法的奇怪编译错误:“quot;应为“:”,找到“>`&引用;,compiler-errors,rust,lexer,Compiler Errors,Rust,Lexer,我定义了一个结构和方法,如下所示: 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> {
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
}
}
struct Lexer,
下一个位置:可窥视Lexer{
让mut lexer=lexer{
|^应为“”:`
但是,按要求执行并将有问题的行更改为let mut lexer=lexer{
|^标签后应为'while'、'for'、'loop'或`{`
我不知道为什么编译器会抱怨,而且尽我所能告诉你,终生符号对我来说很好
我刚刚意识到,构造函数不需要一辈子 正确的符号是
let mut lexer = Lexer {
不是
让mut-lexer=lexer和为什么mut
?;)代码没有必要保持原样。在我的实际程序中,lexer在构造之后但在返回之前被修改。我删除了它,因为它与问题无关。我将在这里更新我的代码,以更好地反映这一点。这很明显,别担心^^您的代码不会编译,因为e0
不是字符,这个问题只是一个语法错误。您必须编写Lexer::
,例如:Lexer@hellow0不是字符,但编译器在相关错误得到解决之前不会为此给出错误,因此我没有捕获它。有(许多)此代码中的其他错误,但在修复相关错误之前,编译器无法看到任何错误。我已更新了我的问题。
let mut lexer = Lexer<'a> {