Skip to content

Latest commit

 

History

History
179 lines (134 loc) · 7.29 KB

buffered_offset_reader.md

File metadata and controls

179 lines (134 loc) · 7.29 KB
category description
I/O
Prefer read_write_at - read_at/write_at with &self

buffered_offset_reader

Offset read_at/write_at with &self

Pros:

  • No runtime dependencies
  • read_at(&self, ...)

Cons:

  • BufOffsetReader is a bit kludgy - u64 as usize casts should probably Err instead
  • Implementing traits directly on File makes for inconsistent seek behavior when used by reference

References: github, docs.rs, lib.rs, crates.io

Alternatives

crate ver rationale
✔️ read_write_at 0.1.0 More generalized, "saner", although File not implementing ReadAt / WriteAt by default on windows is annoying.
io-at 0.4.1 write_at requires &mut self
positioned-io 0.2.2 write_at requires &mut self
positioned-io-preview 0.3.3 write_at requires &mut self
scroll 0.10.1 Assumes you have a fully loaded byte buffer

Audit

version thoroughness understanding rating notes
0.6.0 high high ✔️ positive size -> usize
0.5.0 high high ✔️ positive offset + size -> u64
0.4.0 high high ✔️ positive BufOffsetReader owns R
0.3.0 high high ✔️ positive OffsetRead for &[u8]
0.2.0 high high ✔️ positive +OffsetWrite
0.1.1 high high ✔️ positive
0.1.0 high high ✔️ positive +OffsetRead

0.6.0

Diff Rating Notes
src\lib.rs ✔️ size u64 -> usize

0.5.0

Diff Rating Notes
benches\bench.rs ✔️ offset + size usize -> u64
src\lib.rs ✔️ offset + size usize -> u64

0.4.0

Diff Rating Notes
README.md ✔️ Trivial
benches\bench.rs ✔️
src\lib.rs ✔️ BufOffsetReader now owns R

TIL:

0.3.0

Diff Rating Notes
src\lib.rs ✔️ OffsetRead for &[u8], tests

0.2.0

Diff Rating Notes
README.md ✔️ Whitespace
src\lib.rs ✔️ clear for BufOffsetReader, OffsetWrite

0.1.1

Diff Rating Notes
Cargo.toml ✔️ docs, readme, travis badge, exclude .travis.yml
Cargo.toml.orig ✔️ docs, readme, travis badge, exclude .travis.yml
README.md ✔️ Fleshed out much more, badge links
src\lib.rs ✔️ Saner parens

0.1.0

Full Review

  • Initial OffsetRead only
File Rating Notes
.cargo-ok ✔️
.cargo_vcs_info.json ✔️
.gitignore ✔️
Cargo.toml ✔️ MIT OR Apache-2.0
Cargo.toml.orig ✔️ MIT OR Apache-2.0
LICENSE-APACHE ✔️ Apache-2.0
LICENSE-MIT ✔️ MIT
README.md ✔️ Minimal
benches\bench.rs ⚠️ make_temp_file should use write_all ?
src\lib.rs ✔️
src\range.rs ✔️ Could use better docs
Other Rating Notes
unsafe ✔️ None
fs ✔️ No path manipulation, just safe std stuff
io ✔️ Safe/sane
docs ✔️
tests ✔️❔⚠️❗❌

src/lib.rs

Line Notes
78 ⚠️ Could self.buffer be partially read with a stale self.range?
83 Assumes self.contains(r)
92 ✔️ impl OffsetReadMut for BufOffsetReader - awkwardly coded but correct
110 ✔️ impl OffsetRead for File
127 Skimmed tests