#file-lock

no-std fslock-arti-fork

A library to use files as locks, forked for use in Arti

1 unstable release

0.2.0 Jan 22, 2024

#894 in Filesystem

Download history 1169/week @ 2024-07-20 1654/week @ 2024-07-27 1763/week @ 2024-08-03 1726/week @ 2024-08-10 1172/week @ 2024-08-17 1530/week @ 2024-08-24 1841/week @ 2024-08-31 1857/week @ 2024-09-07 1439/week @ 2024-09-14 1808/week @ 2024-09-21 3570/week @ 2024-09-28 2168/week @ 2024-10-05 1706/week @ 2024-10-12 1800/week @ 2024-10-19 2553/week @ 2024-10-26 2448/week @ 2024-11-02

8,579 downloads per month
Used in 30 crates (via fslock-guard)

MIT license

54KB
1.5K SLoC

fslock-arti-fork

NOTE: This is a fork of the fslock crate for use by Arti. We are forking temporarily because we need https://github.com/brunoczim/fslock/pull/15 in order to implement file deletion safely.

API to use files as a lock. Supports non-std crates by disabling feature std.

Types

Currently, only one type is provided: LockFile. It does not destroy the file after closed and behaviour on locking different file handles owned by the same process is different between Unix and Windows, unless you activate the multilock feature, which enables the open_excl method that locks files per file descriptor/handle on all platforms.

Example

use fslock::LockFile;
fn main() -> Result<(), fslock::Error> {

    let mut file = LockFile::open("mylock")?;
    file.lock()?;
    do_stuff();
    file.unlock()?;

    Ok(())
}

Docs on Master

https://brunoczim.github.io/fslock/fslock

[]


lib.rs:

WARNING: v0.1.x is incompatible with v0.2.x onwards.

NOTE: This is a fork of the fslock crate for use by Arti. We are forking temporarily because we need https://github.com/brunoczim/fslock/pull/15 in order to implement file deletion safely.

API to use files as a lock. Supports non-std crates by disabling feature std.

Types

Currently, only one type is provided: LockFile. It does not destroy the file after closed. Locks are per-handle and not by per-process in any platform. On Unix, however, under fork file descriptors might be duplicated sharing the same lock, but fork is usually unsafe in Rust.

Example

use fslock::LockFile;
fn main() -> Result<(), fslock::Error> {

    let mut file = LockFile::open("testfiles/mylock.lock")?;
    file.lock()?;
    do_stuff();
    file.unlock()?;

    Ok(())
}

Dependencies

~220KB