Crate recommendation for operating on a file slice

I'm looking for a crate that provides File-like operations within a range of a file. Seeking to SeekFrom::Start(0) would seek to the start of the range, and reads/writes would not extend past the end of the range.

Roughly something like this:

struct FileView { ... }

impl FileView {
    fn new(&mut File, range_within_file: Range<u64>) { ... }
}

impl Read for FileView { ... }
impl Write for FileView { ... }
impl Seek for FileView { ... }

FileSlice — Rust library // Lib.rs is solving a similar problem, but doesn't support writes. (Also, it doesn't have tests and uses an atypical license.) I put together a quick implementation that covers my current needs, but there may be edge cases that my tests don't cover, and I'd love to delete the code and use a small and well-tested dependency instead.