Struct atomicwrites::AtomicFile

source ·
pub struct AtomicFile { /* private fields */ }
Expand description

Create a file and write to it atomically, in a callback.

Implementations§

source§

impl AtomicFile

source

pub fn new<P>(path: P, overwrite: OverwriteBehavior) -> Self
where P: AsRef<Path>,

Helper for writing to the file at path atomically, in write-only mode.

If OverwriteBehaviour::DisallowOverwrite is given, an Error::Internal containing an std::io::ErrorKind::AlreadyExists will be returned from self.write(...) if the file exists.

The temporary file is written to a temporary subdirectory in ., to ensure it’s on the same filesystem (so that the move is atomic).

source

pub fn new_with_tmpdir<P, Q>( path: P, overwrite: OverwriteBehavior, tmpdir: Q, ) -> Self
where P: AsRef<Path>, Q: AsRef<Path>,

Like AtomicFile::new, but the temporary file is written to a temporary subdirectory in tmpdir.

TODO: does tmpdir have to exist?

source

pub fn path(&self) -> &Path

Get the target filepath.

source

pub fn write<T, E, F>(&self, f: F) -> Result<T, Error<E>>
where F: FnOnce(&mut File) -> Result<T, E>,

Open a temporary file, call f on it (which is supposed to write to it), then move the file atomically to self.path.

The temporary file is written to a randomized temporary subdirectory with prefix .atomicwrite.

source

pub fn write_with_options<T, E, F>( &self, f: F, options: OpenOptions, ) -> Result<T, Error<E>>
where F: FnOnce(&mut File) -> Result<T, E>,

Open a temporary file with custom OpenOptions, call f on it (which is supposed to write to it), then move the file atomically to self.path.

The temporary file is written to a randomized temporary subdirectory with prefix .atomicwrite.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.