Struct cap_tempfile::TempFile
source · [−]pub struct TempFile<'d> { /* private fields */ }
Expand description
A file in a directory that is by default deleted when it goes out of scope, but may also be written persistently.
This corresponds most closely to tempfile::NamedTempFile
; however,
there are some important differences, so read the below carefully
to understand how to port existing code.
Name-able, but not necessarily named
By default, the file does not necessarily have an name until the file is written persistently.
On some operating systems like Linux, it is possible to create anonymous
temporary files that can still be written to disk persistently via O_TMPFILE
.
The advantage of this is that if the process (or operating system) crashes
while the file is being written, the temporary space will be automatically cleaned up.
For this reason, there is no API to retrieve the name, for either case.
To more closely match the semantics of tempfile::tempfile
, use crate::TempFile::new_anonymous
.
File permissions
Unlike the tempfile crate, the default TempFile::new
will use the same permissions as File::create_new
in
the Rust standard library. Concretely on Unix systems for example this can (depending on umask
) result in
files that are readable by all users. The rationale for this is to make it more ergonomic and natural to use this API to
atomically create new files and replace existing ones. Many cases that want “private” files will
prefer TempFile::new_anonymous
to have the file not be accessible at all outside the current process.
To fully control the permissions of the resulting file, you can use File::set_permissions
.
Implementations
sourceimpl<'d> TempFile<'d>
impl<'d> TempFile<'d>
sourcepub fn new_anonymous(dir: &'d Dir) -> Result<File>
pub fn new_anonymous(dir: &'d Dir) -> Result<File>
Crate a new temporary file in the provided directory that will not have a
name. This corresponds to tempfile::tempfile_in
.
sourcepub fn as_file_mut(&mut self) -> &mut File
pub fn as_file_mut(&mut self) -> &mut File
Get a mutable reference to the underlying file.
Trait Implementations
sourceimpl<'d> Read for TempFile<'d>
impl<'d> Read for TempFile<'d>
sourcefn 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 · 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<'d> Seek for TempFile<'d>
impl<'d> Seek for TempFile<'d>
sourcefn seek(&mut self, pos: SeekFrom) -> Result<u64>
fn seek(&mut self, pos: SeekFrom) -> Result<u64>
Seek to an offset, in bytes, in a stream. Read more
1.55.0 · sourcefn rewind(&mut self) -> Result<(), Error>
fn rewind(&mut self) -> Result<(), Error>
Rewind to the beginning of a stream. Read more
sourceimpl<'d> Write for TempFile<'d>
impl<'d> Write for TempFile<'d>
sourcefn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Write a buffer into this writer, returning how many bytes were written. Read more
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<'d> RefUnwindSafe for TempFile<'d>
impl<'d> Send for TempFile<'d>
impl<'d> Sync for TempFile<'d>
impl<'d> Unpin for TempFile<'d>
impl<'d> UnwindSafe for TempFile<'d>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more