diff options
| author | Mica White <botahamec@outlook.com> | 2024-03-14 22:00:08 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2024-03-14 22:00:08 -0400 |
| commit | bf0b861619d378c6e6f571a1709697d18987b21d (patch) | |
| tree | 209e3d20db16fc16830bd3eab864dd91bf67d465 | |
| parent | faebe204daff3747374c2a3141029f35de2fdc1f (diff) | |
Fix another bug
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/lockable.rs | 14 |
2 files changed, 8 insertions, 8 deletions
@@ -1,6 +1,6 @@ [package] name = "happylock" -version = "0.1.3" +version = "0.1.4" authors = ["Mica White <botahamec@outlook.com>"] edition = "2021" description = "Free deadlock prevention" diff --git a/src/lockable.rs b/src/lockable.rs index 1b1c15c..611f0a0 100644 --- a/src/lockable.rs +++ b/src/lockable.rs @@ -62,15 +62,15 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for &T { type Output = T::Output; fn get_ptrs(&self) -> Vec<usize> { - (*self).get_ptrs() + (**self).get_ptrs() } unsafe fn lock(&'a self) -> Self::Output { - (*self).lock() + (**self).lock() } unsafe fn try_lock(&'a self) -> Option<Self::Output> { - (*self).try_lock() + (**self).try_lock() } } @@ -501,7 +501,7 @@ 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 { + for i in 1..N { match self[i].try_lock() { Some(guard) => outputs[i].write(guard), None => { @@ -529,7 +529,7 @@ unsafe impl<'a, T: Lockable<'a>, const N: usize> Lockable<'a> for [T; N] { } let mut outputs = MaybeUninit::<[MaybeUninit<T::Output>; N]>::uninit().assume_init(); - for i in 0..N { + for i in 1..N { match self[i].try_lock() { Some(guard) => outputs[i].write(guard), None => { @@ -563,7 +563,7 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Box<[T]> { let mut outputs = Vec::with_capacity(self.len()); outputs.push(self[0].lock()); - for lock in self.iter() { + for lock in self.iter().skip(1) { match lock.try_lock() { Some(guard) => { outputs.push(guard); @@ -613,7 +613,7 @@ unsafe impl<'a, T: Lockable<'a>> Lockable<'a> for Vec<T> { let mut outputs = Vec::with_capacity(self.len()); outputs.push(self[0].lock()); - for lock in self { + for lock in self.iter().skip(1) { match lock.try_lock() { Some(guard) => { outputs.push(guard); |
