pub struct Blob<'conn> { /* private fields */ }
blob
only.Expand description
Handle to an open BLOB. See
rusqlite::blob
documentation for in-depth discussion.
Implementations
sourceimpl<'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.
sourceimpl Blob<'_>
impl Blob<'_>
Trait Implementations
sourceimpl Read for Blob<'_>
impl Read for Blob<'_>
sourcefn 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 · sourcefn 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 more
sourcefn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)Determines if this Read
er has an efficient read_vectored
implementation. Read more
1.0.0 · sourcefn 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>
Read all bytes until EOF in this source, placing them into buf
. Read more
1.0.0 · sourcefn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
Read all bytes until EOF in this source, appending them to buf
. Read more
1.6.0 · sourcefn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
Read the exact number of bytes required to fill buf
. Read more
sourcefn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf
)Pull some bytes from this source into the specified buffer. Read more
sourcefn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, buf: &mut ReadBuf<'_>) -> Result<(), Error>
read_buf
)Read the exact number of bytes required to fill buf
. Read more
1.0.0 · sourcefn by_ref(&mut self) -> &mut Self
fn by_ref(&mut self) -> &mut Self
Creates a “by reference” adaptor for this instance of Read
. Read more
sourceimpl Seek for Blob<'_>
impl Seek for Blob<'_>
sourceimpl Write for Blob<'_>
impl Write for Blob<'_>
sourcefn 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.
sourcefn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
sourcefn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)Determines if this Write
r has an efficient write_vectored
implementation. Read more
1.0.0 · sourcefn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Attempts to write an entire buffer into this writer. Read more
sourcefn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)Attempts to write multiple buffers into this writer. Read more
Auto Trait Implementations
impl<'conn> !RefUnwindSafe for Blob<'conn>
impl<'conn> !Send for Blob<'conn>
impl<'conn> !Sync for Blob<'conn>
impl<'conn> Unpin for Blob<'conn>
impl<'conn> !UnwindSafe for Blob<'conn>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more