Crate file_locking

Source
Expand description

§Simple, Lightweight File Locking

This crate provides an extremely lean implementation of file locking for #[cfg(unix)] (using the libc crate) and #[cfg(windows)] (using the windows-sys crate) systems.

The API is exposed as a single extension trait for std::fs::File called FileExt. Simply bring the trait into scope, and you can lock files to your heart’s content:

use std::fs::{ File };
use file_locking::{ FileExt };

let f = File::options()
  .create(true)
  .write(true)
  .open("database.lock")?;

{
  let _guard = f.lock_exclusive()?;

  // ... do some stuff with the knowledge that nobody else can lock the file ...
}

// the lock is now released and can be taken again by somebody else c:

Some unavoidable behavior differences exist between platforms. To summarize:

  • Don’t count on file locks to prevent read or write access to a file, but be prepared for them to.
  • Don’t lock the same on-disk file through the same File object more than once.

Detailed differences are documented on the FileExt trait.

Re-exports§

pub use errors::Error;
pub use errors::Result;
pub use file_ext::FileExt;

Modules§

errors
file_ext