#lock-free #thread-safe #shared-data #threading #data-store

pinboard

A lock-free, threadsafe way to publish data, just stick it on the pinboard

10 stable releases

2.2.0 Apr 17, 2023
2.1.0 Nov 1, 2020
2.0.1 Jan 3, 2019
2.0.0 Dec 17, 2017
0.10.0 Jun 5, 2017

#580 in Concurrency

Download history 443/week @ 2024-07-19 286/week @ 2024-07-26 1635/week @ 2024-08-02 678/week @ 2024-08-09 116/week @ 2024-08-16 45/week @ 2024-08-23 428/week @ 2024-08-30 217/week @ 2024-09-06 108/week @ 2024-09-13 382/week @ 2024-09-20 566/week @ 2024-09-27 1094/week @ 2024-10-04 234/week @ 2024-10-11 242/week @ 2024-10-18 18/week @ 2024-10-25 395/week @ 2024-11-01

961 downloads per month
Used in 3 crates (2 directly)

MIT license

12KB
240 lines

Pinboard

Crates.io - Pinboard Build Status License: MIT

An eventually-consistent, lock-free, mutable store of shared data.

Just stick it on the pinboard!

Documentation

https://docs.rs/pinboard/

Usage

Install from crates.io by adding pinboard to your Cargo.toml:

[dependencies]
pinboard = "2.0.0"

Now you can create a Pinboard, share it between your users (be they Futures, threads or really anything else) and start sharing data!

use pinboard::NonEmptyPinboard;
use std::{thread, time::Duration};

let weather_report = NonEmptyPinboard::new("Sunny");

crossbeam::scope(|scope| {
  scope.spawn(|_| {
    thread::sleep(Duration::from_secs(10));
    weather_report.set("Raining");
  });
  scope.spawn(|_| {
    loop {
      println!("The weather is {}", weather_report.get_ref());
      thread::sleep(Duration::from_secs(1));
    }
  });
});

Dependencies

~255KB