diff options
Diffstat (limited to 'openpgp/src/cert')
-rw-r--r-- | openpgp/src/cert/bindings.rs | 2 | ||||
-rw-r--r-- | openpgp/src/cert/keyiter.rs | 10 |
2 files changed, 8 insertions, 4 deletions
diff --git a/openpgp/src/cert/bindings.rs b/openpgp/src/cert/bindings.rs index 70e80983..52cc9527 100644 --- a/openpgp/src/cert/bindings.rs +++ b/openpgp/src/cert/bindings.rs @@ -37,7 +37,7 @@ impl<P: key::KeyParts> Key<P, key::SubordinateRole> { /// // Let's add an encryption subkey. /// let flags = KeyFlags::default().set_storage_encryption(true); /// assert_eq!(cert.keys().alive().revoked(false) - /// .key_flags(flags.clone()).count(), + /// .key_flags(&flags).count(), /// 0); /// /// // Generate a subkey and a binding signature. diff --git a/openpgp/src/cert/keyiter.rs b/openpgp/src/cert/keyiter.rs index a433e627..7bb59153 100644 --- a/openpgp/src/cert/keyiter.rs +++ b/openpgp/src/cert/keyiter.rs @@ -1,5 +1,6 @@ use std::fmt; use std::convert::TryInto; +use std::borrow::Borrow; use crate::{ RevocationStatus, @@ -254,11 +255,14 @@ impl<'a, P: 'a + key::KeyParts, R: 'a + key::KeyRole> KeyIter<'a, P, R> /// [`Iterator::filter`]. /// /// [`Iterator::filter`]: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.filter - pub fn key_flags(mut self, flags: KeyFlags) -> Self { + pub fn key_flags<F>(mut self, flags: F) -> Self + where F: Borrow<KeyFlags> + { + let flags = flags.borrow(); if let Some(flags_old) = self.flags { - self.flags = Some(&flags | &flags_old); + self.flags = Some(flags | &flags_old); } else { - self.flags = Some(flags); + self.flags = Some(flags.clone()); } self } |