首页 > 解决方案 > 对创建在 rust 中循环 &mut self 的函数的正确方法感到困惑

问题描述

我正在尝试为一个结构创建一个函数,该结构在自身上循环调用一个函数,生命周期有问题

问题出在这个函数中

fn next<'b, 'out>(reader_: &mut Reader<B> ) -> Option<(&'out [u8], BytesStart<'out>)> {
    let test = loop {
        let Reader { reader, ns, buf } = reader_;
        let e = reader
            .read_namespaced_event(buf, ns)
            .map(|(ns, e)| (ns.unwrap_or(&[]), e));
        match e {
            Ok((ns, Event::Start(start))) => {
                break Some((ns, start));
            }
            _ => {}
        }
    };
    test
}

我认为问题出在返回值上,但我不确定如何注释生命周期。

完整代码位于:https ://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=381cc6be43934c091b7444c4c8d80dfc

使用快速 XML。

标签: rust

解决方案


推荐阅读