diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2023-07-03 12:50:25 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2023-07-18 17:06:52 +0200 |
commit | be437462e2bdc774d586c396b116b23b7536fd56 (patch) | |
tree | 0c8cadd7291a9019af1242cc650f76179b864eae /openpgp/src/types | |
parent | 3723a190585fec8573713ac2378001a442bb95b7 (diff) |
openpgp: Rework Bitfield::padding_len.
Diffstat (limited to 'openpgp/src/types')
-rw-r--r-- | openpgp/src/types/bitfield.rs | 14 | ||||
-rw-r--r-- | openpgp/src/types/features.rs | 3 | ||||
-rw-r--r-- | openpgp/src/types/key_flags.rs | 3 | ||||
-rw-r--r-- | openpgp/src/types/server_preferences.rs | 3 |
4 files changed, 7 insertions, 16 deletions
diff --git a/openpgp/src/types/bitfield.rs b/openpgp/src/types/bitfield.rs index af05d24f..ea0c7c21 100644 --- a/openpgp/src/types/bitfield.rs +++ b/openpgp/src/types/bitfield.rs @@ -35,16 +35,10 @@ impl Bitfield { .filter_map(|(i, v)| if v { Some(i) } else { None }) } - pub fn padding_len(&self) -> usize { - let mut padding = 0; - for i in (0..self.raw.len()).rev() { - if self.raw[i] == 0 { - padding += 1; - } else { - break; - } - } - padding + /// Returns the number of trailing zero bytes. + pub fn padding_bytes(&self) -> Option<std::num::NonZeroUsize> { + std::num::NonZeroUsize::new( + self.raw.iter().rev().take_while(|b| **b == 0).count()) } /// Compares two feature sets for semantic equality. diff --git a/openpgp/src/types/features.rs b/openpgp/src/types/features.rs index 2a3689ce..29fb8560 100644 --- a/openpgp/src/types/features.rs +++ b/openpgp/src/types/features.rs @@ -85,8 +85,7 @@ impl fmt::Debug for Features { } // Mention any padding, as equality is sensitive to this. - let padding = self.0.padding_len(); - if padding > 0 { + if let Some(padding) = self.0.padding_bytes() { if need_comma { f.write_str(", ")?; } write!(f, "+padding({} bytes)", padding)?; } diff --git a/openpgp/src/types/key_flags.rs b/openpgp/src/types/key_flags.rs index 5c3a8945..e2948722 100644 --- a/openpgp/src/types/key_flags.rs +++ b/openpgp/src/types/key_flags.rs @@ -95,8 +95,7 @@ impl fmt::Debug for KeyFlags { } // Mention any padding, as equality is sensitive to this. - let padding = self.0.padding_len(); - if padding > 0 { + if let Some(padding) = self.0.padding_bytes() { if need_comma { f.write_str(", ")?; } write!(f, "+padding({} bytes)", padding)?; } diff --git a/openpgp/src/types/server_preferences.rs b/openpgp/src/types/server_preferences.rs index cd3d10aa..6428196f 100644 --- a/openpgp/src/types/server_preferences.rs +++ b/openpgp/src/types/server_preferences.rs @@ -78,8 +78,7 @@ impl fmt::Debug for KeyServerPreferences { } // Mention any padding, as equality is sensitive to this. - let padding = self.0.padding_len(); - if padding > 0 { + if let Some(padding) = self.0.padding_bytes() { if need_comma { f.write_str(", ")?; } write!(f, "+padding({} bytes)", padding)?; } |