我正在疯狂地试图围绕Rust生命周期问题.运行以下代码时:
use std::fs::File;
use std::io::Read;
use std::clone::Clone;
const BUFSIZE : usize = 4096;
struct LexBuf<T: Read> {
f: T,
buf: [u8; BUFSIZE],
tail: usize,
head: usize
}
impl <T : Read> LexBuf<T> {
fn fetch(&mut self) {
let keepSize = self.head - self.tail + 1;
let mut tmpBuf;
{
let tmpSlice = &self.buf[self.tail..self.head+1];
tmpBuf = tmpSlice.clone();
}
&mut self.buf[0..keepSize]
.clone_from_slice(tmpBuf);
let mut n = self.f
.read(&mut self.buf[keepSize..]).unwrap();
if n < BUFSIZE - keepSize {
self.buf[keepSize+n] = 0;
}
}
} …Run Code Online (Sandbox Code Playgroud) rust ×1