Как мне получить позицию события, перебирая ее с помощью EventReader? - PullRequest
1 голос
/ 27 марта 2020

Я хочу использовать xml::reader::EventReader из xml_rs.

Мне нужны как проанализированные события, так и их позиция в файле XML:

use xml::common::{Position, TextPosition};
use xml::reader::{EventReader};

fn main() {
    let s = "<?xml version=\"1.0\"\nencoding=\"UTF-8\"?>\n<ooo></ooo>\n";
    let xml = EventReader::new(s.as_bytes());
    for e in xml {
        println!("event: {:?}", e);
        println!("pos: {:?}", xml.position());
    }
}

Но компилятор жалуется :

error[E0382]: borrow of moved value: `xml`
 --> src/main.rs:9:31
  |
6 |     let xml = EventReader::new(s.as_bytes());
  |         --- move occurs because `xml` has type `xml::reader::EventReader<&[u8]>`, which does not implement the `Copy` trait
7 |     for e in xml {
  |              ---
  |              |
  |              value moved here
  |              help: consider borrowing to avoid moving into the for loop: `&xml`
8 |         println!("event: {:?}", e);
9 |         println!("pos: {:?}", xml.position());
  |                               ^^^ value borrowed here after move

Без второго println! код работает.

[package]
name = "xmlproblem"
version = "0.1.0"
edition = "2018"

[dependencies]
xml-rs = "0.8"

Как мне решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...