Skip to content

Commit 25ade32

Browse files
client/file: Pre-allocate Vecs
1 parent 8d1eaf1 commit 25ade32

3 files changed

Lines changed: 6 additions & 4 deletions

File tree

client/src/file/api/legacy_keyring.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ impl Keyring {
7474

7575
fn read_items(self, decrypted: &[u8]) -> Result<Vec<UnlockedItem>, Error> {
7676
let mut cursor = Cursor::new(decrypted);
77-
let mut items = Vec::new();
77+
let mut items = Vec::with_capacity(self.item_count);
7878
for _ in 0..self.item_count {
7979
let display_name = Self::read_string(&mut cursor)?
8080
.ok_or_else(|| io::Error::new(io::ErrorKind::InvalidInput, "empty item label"))?;

client/src/file/locked_keyring.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,10 @@ impl LockedKeyring {
155155
Ok(mut file) => {
156156
#[cfg(feature = "tracing")]
157157
tracing::debug!("Keyring file found, loading its content");
158-
let mtime = file.metadata().await?.modified().ok();
158+
let metadata = file.metadata().await?;
159+
let mtime = metadata.modified().ok();
159160

160-
let mut content = Vec::new();
161+
let mut content = Vec::with_capacity(metadata.len() as usize);
161162
file.read_to_end(&mut content).await?;
162163

163164
let keyring = api::Keyring::try_from(content.as_slice())?;

client/src/file/unlocked_keyring.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ impl UnlockedKeyring {
111111
path: impl AsRef<Path>,
112112
secret: Secret,
113113
) -> Result<Self, Error> {
114-
let mut content = Vec::new();
114+
let metadata = file.metadata().await?;
115+
let mut content = Vec::with_capacity(metadata.len() as usize);
115116
file.read_to_end(&mut content).await?;
116117

117118
match api::Keyring::try_from(content.as_slice()) {

0 commit comments

Comments
 (0)