https://github.com/ugniljoz/seekable_reader
Rust byte reader with a seek-back cache
https://github.com/ugniljoz/seekable_reader
read rust seek trait
Last synced: about 1 year ago
JSON representation
Rust byte reader with a seek-back cache
- Host: GitHub
- URL: https://github.com/ugniljoz/seekable_reader
- Owner: UgnilJoZ
- License: apache-2.0
- Created: 2021-11-09T23:42:59.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-01-17T17:03:11.000Z (over 4 years ago)
- Last Synced: 2025-04-24T05:38:45.703Z (about 1 year ago)
- Topics: read, rust, seek, trait
- Language: Rust
- Homepage:
- Size: 29.3 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
[](https://crates.io/crates/seekable_reader)
[](https://codecov.io/gh/UgnilJoZ/seekable_reader)
[](https://docs.rs/seekable_reader/latest/seekable_reader/struct.SeekableReader.html)
[](https://deps.rs/crate/seekable_reader/0.1.2)
# seekable_reader
This crate introduces the **SeekableReader**, which provides `Seek` if wrapped around a `Read` instance.
An example:
```rust
use std::io::{Read, Seek, SeekFrom};
use seekable_reader::SeekableReader;
let source = vec![1, 2, 3, 4, 5];
let mut reader = SeekableReader::new(source.as_slice(), 1);
let mut buffer = vec![0; 5];
// Read one byte and seek back
reader.read(&mut buffer[..1]).unwrap();
reader.seek(SeekFrom::Start(0)).unwrap();
// First byte can be read again!
let bytes: Vec<_> = reader.bytes().map(|b| b.unwrap()).collect();
assert_eq!(&source, &bytes);
```