aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Cully <bjc@kublai.com>2019-08-15 15:04:07 -0400
committerBrian Cully <bjc@kublai.com>2019-09-02 11:42:29 -0400
commit0654e10d0078955d6917db504ee5947846d4f952 (patch)
tree6420567ff130614dff2185b77d580efa6593cc87
parentf15d28f86333d869b3ef0aaba10f4d720725bce5 (diff)
downloadstarb-0654e10d0078955d6917db504ee5947846d4f952.tar.gz
starb-0654e10d0078955d6917db504ee5947846d4f952.zip
Remove `Sync` marker for Reader/Writer.v0.3.0
These are not sync, as they can only be used from one thread at a time. Also add a `Send` trait for `RingBuffer`, as long as its element type is also `Send`.
-rw-r--r--Cargo.toml2
-rw-r--r--Changelog.org7
-rw-r--r--src/lib.rs3
3 files changed, 8 insertions, 4 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 28e5c6b..bebb670 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "starb"
description = "STAtic Ring Buffers."
-version = "0.2.0"
+version = "0.3.0"
authors = ["Brian Cully <bjc@kublai.com>"]
edition = "2018"
license = "LGPL-3.0-or-later"
diff --git a/Changelog.org b/Changelog.org
index 93327cc..74c731f 100644
--- a/Changelog.org
+++ b/Changelog.org
@@ -1,5 +1,10 @@
-* Since 0.1
+* Since 0.2
+ - API CHANGE: The `Reader` and `Writer` types were inadvertently
+ marked `Sync` when they are not. While you may read and write from
+ separate threads safely, it is neither safe to read from two
+ threads or more threads nor write from two or more threads.
+* Since 0.1
- API CHANGE: `RingBuffer::new()` no longer takes an argument.
- `Copy` trait is no longer required on most `RingBuffer` methods.
- Added two methods for bulk copying data in/out of the ring buffer:
diff --git a/src/lib.rs b/src/lib.rs
index 254d833..96a947b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -73,6 +73,7 @@ impl<T> RingBuffer<T> {
(rbr, rbw)
}
}
+unsafe impl<T> Send for RingBuffer<T> where T: Send {}
/// Consumer of `RingBuffer`.
pub struct Reader<'a, T> {
@@ -80,7 +81,6 @@ pub struct Reader<'a, T> {
_marker: PhantomData<&'a ()>,
}
unsafe impl<T> Send for Reader<'_, T> where T: Send {}
-unsafe impl<T> Sync for Reader<'_, T> {}
/// Producer for `Ringbuffer`.
pub struct Writer<'a, T> {
@@ -88,7 +88,6 @@ pub struct Writer<'a, T> {
_marker: PhantomData<&'a ()>,
}
unsafe impl<T> Send for Writer<'_, T> where T: Send {}
-unsafe impl<T> Sync for Writer<'_, T> {}
impl<T> Reader<'_, T> {
/// The number of elements currently available for reading.