From 64119c4f295be635e9f364c79016aa0494cd5b0d Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Fri, 18 Feb 2022 17:43:29 +0100 Subject: [PATCH] Where possible, avoid unnecessary boxing. --- card-functionality/src/cards.rs | 6 ++++-- tools/src/bin/opgpcard/main.rs | 7 ++++--- tools/src/bin/opgpcard/util.rs | 8 ++++---- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/card-functionality/src/cards.rs b/card-functionality/src/cards.rs index b35c19b..6fadee7 100644 --- a/card-functionality/src/cards.rs +++ b/card-functionality/src/cards.rs @@ -106,8 +106,10 @@ impl TestCard { let card: Result, Error> = loop { let res = PcscBackend::open_by_ident(ident, SHARE_MODE); - if i == 3 || res.is_ok() { - break res.map(Into::into); + if i == 3 { + if let Ok(res) = res { + break Ok(Box::new(res)); + } } // sleep for 100ms diff --git a/tools/src/bin/opgpcard/main.rs b/tools/src/bin/opgpcard/main.rs index 067c704..797c631 100644 --- a/tools/src/bin/opgpcard/main.rs +++ b/tools/src/bin/opgpcard/main.rs @@ -13,6 +13,7 @@ use sequoia_openpgp::Cert; use openpgp_card::algorithm::AlgoSimple; use openpgp_card::{card_do::Sex, KeyType}; +use openpgp_card::CardBackend; use openpgp_card_sequoia::card::{Admin, Open}; use openpgp_card_sequoia::util::{make_cert, public_key_material_to_key}; @@ -162,12 +163,12 @@ fn set_identity( } fn print_status(ident: Option, verbose: bool) -> Result<()> { - let mut card = if let Some(ident) = ident { - util::open_card(&ident)? + let mut card: Box = if let Some(ident) = ident { + Box::new(util::open_card(&ident)?) } else { let mut cards = util::cards()?; if cards.len() == 1 { - cards.pop().unwrap() + Box::new(cards.pop().unwrap()) } else { return Err(anyhow::anyhow!("Found {} cards", cards.len())); } diff --git a/tools/src/bin/opgpcard/util.rs b/tools/src/bin/opgpcard/util.rs index 450ab7c..b3fead1 100644 --- a/tools/src/bin/opgpcard/util.rs +++ b/tools/src/bin/opgpcard/util.rs @@ -10,13 +10,13 @@ use openpgp_card::{CardBackend, Error}; use openpgp_card_pcsc::PcscBackend; use openpgp_card_sequoia::card::{Admin, Open, Sign, User}; -pub(crate) fn cards() -> Result>, Error> { +pub(crate) fn cards() -> Result, Error> { PcscBackend::cards(None) - .map(|cards| cards.into_iter().map(Into::into).collect()) + .map(|cards| cards.into_iter().collect()) } -pub(crate) fn open_card(ident: &str) -> Result, Error> { - PcscBackend::open_by_ident(ident, None).map(Into::into) +pub(crate) fn open_card(ident: &str) -> Result { + PcscBackend::open_by_ident(ident, None) } pub(crate) fn verify_to_user<'app, 'open>(