summaryrefslogtreecommitdiff
path: root/src/lockable.rs
diff options
context:
space:
mode:
authorMica White <botahamec@outlook.com>2024-03-14 21:39:37 -0400
committerMica White <botahamec@outlook.com>2024-03-14 21:39:37 -0400
commitedbb480310e3dd2c865f9481892cfc262e5a97da (patch)
tree46317d2fe64374e43b484bda3f2208c82339d898 /src/lockable.rs
parent26bd3c9a0b3861719f8e0e1541d84a28531d368c (diff)
Revert bug
Diffstat (limited to 'src/lockable.rs')
-rw-r--r--src/lockable.rs26
1 files changed, 4 insertions, 22 deletions
diff --git a/src/lockable.rs b/src/lockable.rs
index 086ab33..1b1c15c 100644
--- a/src/lockable.rs
+++ b/src/lockable.rs
@@ -494,7 +494,6 @@ unsafe impl<'a, T: Lockable<'a>, const N: usize> Lockable<'a> for [T; N] {
}
}
- let mut first_idx = 0;
'outer: loop {
let mut outputs = MaybeUninit::<[MaybeUninit<T::Output>; N]>::uninit().assume_init();
if N == 0 {
@@ -503,15 +502,10 @@ unsafe impl<'a, T: Lockable<'a>, const N: usize> Lockable<'a> for [T; N] {
outputs[0].write(self[0].lock());
for i in 0..N {
- if first_idx == i {
- continue;
- }
-
match self[i].try_lock() {
Some(guard) => outputs[i].write(guard),
None => {
unlock_partial::<T, N>(outputs, i);
- first_idx = i;
continue 'outer;
}
};
@@ -561,7 +555,6 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Box<[T]> {
}
unsafe fn lock(&'a self) -> Self::Output {
- let mut first_idx = 0;
if self.is_empty() {
return Box::new([]);
}
@@ -569,18 +562,13 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Box<[T]> {
'outer: loop {
let mut outputs = Vec::with_capacity(self.len());
- outputs.push(self[first_idx].lock());
- for (idx, lock) in self.iter().enumerate() {
- if first_idx == idx {
- continue;
- }
-
+ outputs.push(self[0].lock());
+ for lock in self.iter() {
match lock.try_lock() {
Some(guard) => {
outputs.push(guard);
}
None => {
- first_idx = idx;
continue 'outer;
}
};
@@ -617,7 +605,6 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Vec<T> {
}
unsafe fn lock(&'a self) -> Self::Output {
- let mut first_idx = 0;
if self.is_empty() {
return Vec::new();
}
@@ -625,18 +612,13 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Vec<T> {
'outer: loop {
let mut outputs = Vec::with_capacity(self.len());
- outputs.push(self[first_idx].lock());
- for (idx, lock) in self.iter().enumerate() {
- if first_idx == idx {
- continue;
- }
-
+ outputs.push(self[0].lock());
+ for lock in self {
match lock.try_lock() {
Some(guard) => {
outputs.push(guard);
}
None => {
- first_idx = idx;
continue 'outer;
}
};