相关疑难解决方法(0)

循环中的锈蚀寿命问题

如何在不进行数组复制或b()每次迭代多次调用的情况下使此示例进行编译- b()必须执行一些昂贵的解析?

这不是我编写的完整代码,但是它说明了我遇到的问题。在这里,Test正在尝试执行某种流解析工作。c()是解析函数,Some解析成功后返回。b()是一项功能,当c()无法使用可用数据进行解析时,它将尝试从流中读取更多数据。返回的值是self.v包含已解析范围的切片。

struct Test {
    v: [u8; 10],
    index: u8,
}

impl Test {
    fn b(&mut self) {
        self.index = 1
    }

    fn c(i: &[u8]) -> Option<&[u8]> {
        Some(i)
    }

    fn a(&mut self) -> &[u8] {
        loop {
            self.b();

            match Test::c(&self.v) {
                Some(r) => return r,
                _ => continue,
            }
        }
    }
}

fn main() {
    let mut q = Test {
        v: [0; …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

3
推荐指数
1
解决办法
525
查看次数

标签 统计

borrow-checker ×1

rust ×1