Skip to content

Commit 675fa79

Browse files
committed
Reference-rhs bitwise operations for features.
1 parent 7d406d9 commit 675fa79

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

lightning/src/ln/features.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
use crate::{io, io_extras};
7272
use crate::prelude::*;
7373
use core::{cmp, fmt};
74+
use core::borrow::Borrow;
7475
use core::hash::{Hash, Hasher};
7576
use core::marker::PhantomData;
7677

@@ -425,15 +426,21 @@ pub struct Features<T: sealed::Context> {
425426
mark: PhantomData<T>,
426427
}
427428

429+
impl<T: sealed::Context, Rhs: Borrow<Self>> core::ops::BitOrAssign<Rhs> for Features<T> {
430+
fn bitor_assign(&mut self, rhs: Rhs) {
431+
let total_feature_len = cmp::max(self.flags.len(), rhs.borrow().flags.len());
432+
self.flags.resize(total_feature_len, 0u8);
433+
for (byte, rhs_byte) in self.flags.iter_mut().zip(rhs.borrow().flags.iter()) {
434+
*byte |= *rhs_byte;
435+
}
436+
}
437+
}
438+
428439
impl<T: sealed::Context> core::ops::BitOr for Features<T> {
429440
type Output = Self;
430441

431442
fn bitor(mut self, o: Self) -> Self {
432-
let total_feature_len = cmp::max(self.flags.len(), o.flags.len());
433-
self.flags.resize(total_feature_len, 0u8);
434-
for (byte, o_byte) in self.flags.iter_mut().zip(o.flags.iter()) {
435-
*byte |= *o_byte;
436-
}
443+
self |= o;
437444
self
438445
}
439446
}

0 commit comments

Comments
 (0)