pub struct SyncReader { /* private fields */ }Expand description
File handle for reading data synchronously.
Make sure to call get.check() when done reading
to verify that the extracted data passes integrity
verification.
Implementations§
Source§impl SyncReader
impl SyncReader
Sourcepub fn check(self) -> Result<Algorithm>
pub fn check(self) -> Result<Algorithm>
Checks that data read from disk passes integrity checks. Returns the algorithm that was used verified the data. Should be called only after all data has been read from disk.
§Example
use std::io::Read;
fn main() -> cacache::Result<()> {
let mut fd = cacache::SyncReader::open("./my-cache", "my-key")?;
let mut str = String::new();
fd.read_to_string(&mut str).expect("Failed to read to string");
// Remember to check that the data you got was correct!
fd.check()?;
Ok(())
}Sourcepub fn open<P, K>(cache: P, key: K) -> Result<SyncReader>
pub fn open<P, K>(cache: P, key: K) -> Result<SyncReader>
Opens a new synchronous file handle into the cache, looking it up in the
index using key.
§Example
use std::io::Read;
fn main() -> cacache::Result<()> {
let mut fd = cacache::SyncReader::open("./my-cache", "my-key")?;
let mut str = String::new();
fd.read_to_string(&mut str).expect("Failed to parse string");
// Remember to check that the data you got was correct!
fd.check()?;
Ok(())
}Sourcepub fn open_hash<P>(cache: P, sri: Integrity) -> Result<SyncReader>
pub fn open_hash<P>(cache: P, sri: Integrity) -> Result<SyncReader>
Opens a new synchronous file handle into the cache, based on its integrity address.
§Example
use std::io::Read;
fn main() -> cacache::Result<()> {
let sri = cacache::write_sync("./my-cache", "key", b"hello world")?;
let mut fd = cacache::SyncReader::open_hash("./my-cache", sri)?;
let mut str = String::new();
fd.read_to_string(&mut str).expect("Failed to read to string");
// Remember to check that the data you got was correct!
fd.check()?;
Ok(())
}Trait Implementations§
Source§impl Read for SyncReader
impl Read for SyncReader
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Pull some bytes from this source into the specified buffer, returning
how many bytes were read. Read more
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
Like
read, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
🔬This is a nightly-only experimental API. (
can_vector)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
Reads all bytes until EOF in this source, placing them into
buf. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Reads all bytes until EOF in this source, appending them to
buf. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Reads the exact number of bytes required to fill
buf. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Pull some bytes from this source into the specified buffer. Read more
Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
🔬This is a nightly-only experimental API. (
read_buf)Reads the exact number of bytes required to fill
cursor. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Creates a “by reference” adaptor for this instance of
Read. Read moreAuto Trait Implementations§
impl Freeze for SyncReader
impl RefUnwindSafe for SyncReader
impl Send for SyncReader
impl Sync for SyncReader
impl Unpin for SyncReader
impl UnwindSafe for SyncReader
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more