mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 23:08:36 +01:00
Reference-rhs bitwise operations for features.
This commit is contained in:
parent
38a2186cb6
commit
bf2218260e
1 changed files with 12 additions and 5 deletions
|
@ -77,6 +77,7 @@
|
|||
use crate::{io, io_extras};
|
||||
use crate::prelude::*;
|
||||
use core::{cmp, fmt};
|
||||
use core::borrow::Borrow;
|
||||
use core::hash::{Hash, Hasher};
|
||||
use core::marker::PhantomData;
|
||||
|
||||
|
@ -431,15 +432,21 @@ pub struct Features<T: sealed::Context> {
|
|||
mark: PhantomData<T>,
|
||||
}
|
||||
|
||||
impl<T: sealed::Context, Rhs: Borrow<Self>> core::ops::BitOrAssign<Rhs> for Features<T> {
|
||||
fn bitor_assign(&mut self, rhs: Rhs) {
|
||||
let total_feature_len = cmp::max(self.flags.len(), rhs.borrow().flags.len());
|
||||
self.flags.resize(total_feature_len, 0u8);
|
||||
for (byte, rhs_byte) in self.flags.iter_mut().zip(rhs.borrow().flags.iter()) {
|
||||
*byte |= *rhs_byte;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: sealed::Context> core::ops::BitOr for Features<T> {
|
||||
type Output = Self;
|
||||
|
||||
fn bitor(mut self, o: Self) -> Self {
|
||||
let total_feature_len = cmp::max(self.flags.len(), o.flags.len());
|
||||
self.flags.resize(total_feature_len, 0u8);
|
||||
for (byte, o_byte) in self.flags.iter_mut().zip(o.flags.iter()) {
|
||||
*byte |= *o_byte;
|
||||
}
|
||||
self |= o;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue