safe-lock 0.1.4

A lock struct with a `const fn` constructor and no `unsafe` - ARCHIVED
Documentation
  • Coverage
  • 80%
    4 out of 5 items documented0 out of 4 items with examples
  • Size
  • Source code size: 12 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 424.59 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • leonhard-llc/ops
    14 6 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • mleonhard

ARCHIVED ARCHIVED ARCHIVED

This crate is archived and will not be updated.

[std::sync::Mutex] got a const constructor, making this crate unnecessary. See rustlang/rust#66806. Don't use this crate. Just use [std::sync::Mutex].

For folks who continue using this crate, SafeLock is now a simple wrapper around [std::sync::Mutex], so their tests will run a bit faster.


safe-lock

A simple SafeLock struct.

Use Cases

  • Run tests sequentially
  • Prevent concurrent operations on atomic values
  • Prevent concurrent operations on data and systems outside the Rust runtime

Features

  • Const constructor
  • Depends only on std
  • forbid(unsafe_code)
  • 100% test coverage

Limitations

  • Not a Mutex<T>. Does not contain a value.
  • Unoptimized. Uses AtomicBool in a spinlock, not fast OS locks.
  • Not a fair lock. If multiple threads acquire the lock in loops, some may never acquire it.

Alternatives

Related Crates

Example

Make some tests run sequentially so they don't interfere with each other:

use safe_lock::SafeLock;
static LOCK: SafeLock = SafeLock::new();

[#test]
fn test1() {
    let _guard = LOCK.lock();
    // ...
}

[#test]
fn test2() {
    let _guard = LOCK.lock();
    // ...
}

Cargo Geiger Safety Report


Metric output format: x/y
    x = unsafe code used by the build
    y = total unsafe code found in the crate

Symbols: 
    🔒  = No `unsafe` usage found, declares #![forbid(unsafe_code)]
    ❓  = No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☢️  = `unsafe` usage found

Functions  Expressions  Impls  Traits  Methods  Dependency

0/0        0/0          0/0    0/0     0/0      🔒  safe-lock 0.1.4

0/0        0/0          0/0    0/0     0/0    

Changelog

  • v0.1.4
    • Make SafeLock a wrapper around [std::sync::Mutex] since it got a const constructor.
    • Add archival notice.
  • v0.1.3 - Increase test coverage
  • v0.1.2 - Use Acquire and Release ordering
  • v0.1.1 - Update docs
  • v0.1.0 - Initial version

License: Apache-2.0