如何在不进行数组复制或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)