fn basic_string(&mut self, start: usize) -> Option<Value> {
        if !self.expect('"') { return None }
        let mut multiline = false;

        // detect multiline literals, but be careful about empty ""
        // strings
        if self.eat('"') {
            if self.eat('"') {
                multiline = true;
                self.newline();
            } else {
                // empty
                return Some(Value::String(String::new()))
            }
        }

        self.finish_basic_string(start, multiline).map(Value::String)
    }
// Parses a single or multi-line string
Parses a single or multi-line string
Parses a single or multi - line string
fn basic_string(&mut self, start: usize) -> Option<Value> {
        if !self.expect('"') { return None }
        let mut multiline = false;
        // detect multiline literals, but be careful about empty ""
        // strings
        if self.eat('"') {
            if self.eat('"') {
                multiline = true;
                self.newline();
            } else {
                // empty
                return Some(Value::String(String::new()))
            }
        }
        self.finish_basic_string(start, multiline).map(Value::String)
    }
fn basic_string ( & mut self , start : usize ) -> Option < Value > { if ! self . expect ( '"' ) { return None } let mut multiline = false ; // detect multiline literals, but be careful about empty "" // strings if self . eat ( '"' ) { if self . eat ( '"' ) { multiline = true ; self . newline ( ) ; } else { // empty return Some ( Value :: String ( String :: new ( ) ) ) } } self . finish_basic_string ( start , multiline ) . map ( Value :: String ) }
Parses a single or multi-line string
Parses a single or multi - line string
&mut self
start
usize
&mut self
start
usize