pub struct Blob<'conn> { /* private fields */ }
blob
only.Expand description
Handle to an open BLOB. See
rusqlite::blob
documentation for in-depth discussion.
Implementations§
source§impl<'conn> Blob<'conn>
impl<'conn> Blob<'conn>
sourcepub fn write_at(&mut self, buf: &[u8], write_start: usize) -> Result<()>
pub fn write_at(&mut self, buf: &[u8], write_start: usize) -> Result<()>
Write buf
to self
starting at write_start
, returning an error if
write_start + buf.len()
is past the end of the blob.
If an error is returned, no data is written.
Note: the blob cannot be resized using this function – that must be
done using SQL (for example, an UPDATE
statement).
Note: This is part of the positional I/O API, and thus takes an absolute
position write to, instead of using the internal position that can be
manipulated by the std::io
traits.
Unlike the similarly named FileExt::write_at
function
(from std::os::unix
), it’s always an error to perform a “short write”.
sourcepub fn write_all_at(&mut self, buf: &[u8], write_start: usize) -> Result<()>
pub fn write_all_at(&mut self, buf: &[u8], write_start: usize) -> Result<()>
An alias for write_at
provided for compatibility with the conceptually
equivalent std::os::unix::FileExt::write_all_at
function from libstd:
sourcepub fn read_at(&self, buf: &mut [u8], read_start: usize) -> Result<usize>
pub fn read_at(&self, buf: &mut [u8], read_start: usize) -> Result<usize>
Read as much as possible from offset
to offset + buf.len()
out of
self
, writing into buf
. On success, returns the number of bytes
written.
If there’s insufficient data in self
, then the returned value will be
less than buf.len()
.
See also Blob::raw_read_at
, which can take an uninitialized buffer,
or Blob::read_at_exact
which returns an error if the entire buf
is
not read.
Note: This is part of the positional I/O API, and thus takes an absolute
position to read from, instead of using the internal position that can
be manipulated by the std::io
traits. Consequently, it does not change
that value either.
sourcepub fn raw_read_at<'a>(
&self,
buf: &'a mut [MaybeUninit<u8>],
read_start: usize
) -> Result<&'a mut [u8]>
pub fn raw_read_at<'a>( &self, buf: &'a mut [MaybeUninit<u8>], read_start: usize ) -> Result<&'a mut [u8]>
Read as much as possible from offset
to offset + buf.len()
out of
self
, writing into buf
. On success, returns the portion of buf
which was initialized by this call.
If there’s insufficient data in self
, then the returned value will be
shorter than buf
.
See also Blob::read_at
, which takes a &mut [u8]
buffer instead of
a slice of MaybeUninit<u8>
.
Note: This is part of the positional I/O API, and thus takes an absolute
position to read from, instead of using the internal position that can
be manipulated by the std::io
traits. Consequently, it does not change
that value either.
sourcepub fn read_at_exact(&self, buf: &mut [u8], read_start: usize) -> Result<()>
pub fn read_at_exact(&self, buf: &mut [u8], read_start: usize) -> Result<()>
Equivalent to Blob::read_at
, but returns a BlobSizeError
if buf
is not fully initialized.
sourcepub fn raw_read_at_exact<'a>(
&self,
buf: &'a mut [MaybeUninit<u8>],
read_start: usize
) -> Result<&'a mut [u8]>
pub fn raw_read_at_exact<'a>( &self, buf: &'a mut [MaybeUninit<u8>], read_start: usize ) -> Result<&'a mut [u8]>
Equivalent to Blob::raw_read_at
, but returns a BlobSizeError
if
buf
is not fully initialized.
Trait Implementations§
source§impl Read for Blob<'_>
impl Read for Blob<'_>
source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
Read data from a BLOB incrementally. Will return Ok(0) if the end of the blob has been reached.
Failure
Will return Err
if the underlying SQLite read call fails.
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>
read
, except that it reads into a slice of buffers. Read moresource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · source§fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8, Global>) -> Result<usize, Error>
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>
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>
buf
. Read moresource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,
Read
. Read moresource§impl Seek for Blob<'_>
impl Seek for Blob<'_>
source§impl Write for Blob<'_>
impl Write for Blob<'_>
source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write data into a BLOB incrementally. Will return Ok(0)
if the end of
the blob has been reached; consider using Write::write_all(buf)
if you want to get an error if the entirety of the buffer cannot be
written.
This function may only modify the contents of the BLOB; it is not possible to increase the size of a BLOB using this API.
Failure
Will return Err
if the underlying SQLite write call fails.
source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)