2

This is my tokenizer.rs:

pub struct Tokenizer<'a> {
    string: &'a String,
    cursor: usize,
}

impl<'a> Tokenizer<'a> {
    pub fn new(string: &'a String) -> Self {
        Tokenizer { string, cursor: 0 }
    }
}

The following is parser.rs,

pub struct Parser {
    string: String,
    tokenizer: Tokenizer,
}

impl Parser {
    pub fn new(string: String) -> Self {
        Parser {
            string,
            tokenizer: Tokenizer::new(&string),
        }
    }
}

The error I get in parser.rs for field tokenizer in struct Parser is,

consider introducing a named lifetime parameter: `<'a>`, `<'a>`

Why is it complaining? I already passed a reference to the string. Why do I need to specify lifetime for Tokenizer? And how do I specify it? I am not so sure of the syntax either.

cafce25
  • 15,907
  • 4
  • 25
  • 31
Axel
  • 4,365
  • 11
  • 63
  • 122

0 Answers0