fix(clippy): Resolve some lifetime and reference lints (#4578)

* Fix significant drop in match scrutinee

https://github.com/rust-lang/rust/issues/93883

* Fix deref immutable value

* Fix explicit 0 index when first() would do

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
teor 2022-06-14 16:21:07 +10:00 committed by GitHub
parent 8d0a1b011c
commit 3825caae03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 17 additions and 8 deletions

View File

@ -335,7 +335,8 @@ impl NoteCommitmentTree {
.cached_root .cached_root
.write() .write()
.expect("a thread that previously held exclusive lock access panicked"); .expect("a thread that previously held exclusive lock access panicked");
match *write_root { let read_root = write_root.as_ref().cloned();
match read_root {
// Another thread got write access first, return cached root. // Another thread got write access first, return cached root.
Some(root) => root, Some(root) => root,
None => { None => {

View File

@ -340,7 +340,8 @@ impl NoteCommitmentTree {
.cached_root .cached_root
.write() .write()
.expect("a thread that previously held exclusive lock access panicked"); .expect("a thread that previously held exclusive lock access panicked");
match *write_root { let read_root = write_root.as_ref().cloned();
match read_root {
// Another thread got write access first, return cached root. // Another thread got write access first, return cached root.
Some(root) => root, Some(root) => root,
None => { None => {

View File

@ -274,7 +274,8 @@ impl NoteCommitmentTree {
.cached_root .cached_root
.write() .write()
.expect("a thread that previously held exclusive lock access panicked"); .expect("a thread that previously held exclusive lock access panicked");
match *write_root { let read_root = write_root.as_ref().cloned();
match read_root {
// Another thread got write access first, return cached root. // Another thread got write access first, return cached root.
Some(root) => root, Some(root) => root,
None => { None => {

View File

@ -98,7 +98,7 @@ pub(crate) fn parse_coinbase_height(
mut data: Vec<u8>, mut data: Vec<u8>,
) -> Result<(block::Height, CoinbaseData), SerializationError> { ) -> Result<(block::Height, CoinbaseData), SerializationError> {
use block::Height; use block::Height;
match (data.get(0), data.len()) { match (data.first(), data.len()) {
// Blocks 1 through 16 inclusive encode block height with OP_N opcodes. // Blocks 1 through 16 inclusive encode block height with OP_N opcodes.
(Some(op_n @ 0x51..=0x60), len) if len >= 1 => Ok(( (Some(op_n @ 0x51..=0x60), len) if len >= 1 => Ok((
Height((op_n - 0x50) as u32), Height((op_n - 0x50) as u32),

View File

@ -195,12 +195,18 @@ impl ChainTipSender {
// a read-lock being created and living beyond the `self.sender.send(..)` call. If that // a read-lock being created and living beyond the `self.sender.send(..)` call. If that
// happens, the `send` method will attempt to obtain a write-lock and will dead-lock. // happens, the `send` method will attempt to obtain a write-lock and will dead-lock.
// Without the binding, the guard is dropped at the end of the expression. // Without the binding, the guard is dropped at the end of the expression.
let needs_update = match (new_tip.as_ref(), self.sender.borrow().as_ref()) { let active_hash = self
.sender
.borrow()
.as_ref()
.map(|active_value| active_value.hash);
let needs_update = match (new_tip.as_ref(), active_hash) {
// since the blocks have been contextually validated, // since the blocks have been contextually validated,
// we know their hashes cover all the block data // we know their hashes cover all the block data
(Some(new_tip), Some(active_value)) => new_tip.hash != active_value.hash, (Some(new_tip), Some(active_hash)) => new_tip.hash != active_hash,
(Some(_new_tip), None) => true, (Some(_new_tip), None) => true,
(None, _active_value) => false, (None, _active_value_hash) => false,
}; };
if needs_update { if needs_update {

View File

@ -73,7 +73,7 @@ where
type Bytes = T::Bytes; type Bytes = T::Bytes;
fn as_bytes(&self) -> Self::Bytes { fn as_bytes(&self) -> Self::Bytes {
T::as_bytes(&*self) T::as_bytes(self)
} }
} }