]> git.proxmox.com Git - proxmox-backup.git/commitdiff
tools::format: avoid some string copies
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 30 Sep 2021 09:41:21 +0000 (11:41 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 30 Sep 2021 10:43:33 +0000 (12:43 +0200)
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
pbs-client/src/backup_writer.rs
pbs-client/src/tools/mod.rs
pbs-tools/src/format.rs

index 20ae6e2ce822a999589de6a4936870f19015feab..531de2e8b804464fb26aad8e27a83f9758518820 100644 (file)
@@ -338,7 +338,7 @@ impl BackupWriter {
         let size_dirty = upload_stats.size - upload_stats.size_reused;
         let size: HumanByte = upload_stats.size.into();
         let archive = if self.verbose {
-            archive_name.to_string()
+            archive_name
         } else {
             pbs_tools::format::strip_server_file_extension(archive_name)
         };
index 2c1c6e6c614afd10aa7b1e32ebe003cd9f79faf8..f3d63ae53383ed96f16baf2bb6dc0ca6922f248b 100644 (file)
@@ -306,7 +306,7 @@ pub async fn complete_server_file_name_do(param: &HashMap<String, String>) -> Ve
 pub fn complete_archive_name(arg: &str, param: &HashMap<String, String>) -> Vec<String> {
     complete_server_file_name(arg, param)
         .iter()
-        .map(|v| pbs_tools::format::strip_server_file_extension(&v))
+        .map(|v| pbs_tools::format::strip_server_file_extension(&v).to_owned())
         .collect()
 }
 
@@ -315,7 +315,7 @@ pub fn complete_pxar_archive_name(arg: &str, param: &HashMap<String, String>) ->
         .iter()
         .filter_map(|name| {
             if name.ends_with(".pxar.didx") {
-                Some(pbs_tools::format::strip_server_file_extension(name))
+                Some(pbs_tools::format::strip_server_file_extension(name).to_owned())
             } else {
                 None
             }
@@ -328,7 +328,7 @@ pub fn complete_img_archive_name(arg: &str, param: &HashMap<String, String>) ->
         .iter()
         .filter_map(|name| {
             if name.ends_with(".img.fidx") {
-                Some(pbs_tools::format::strip_server_file_extension(name))
+                Some(pbs_tools::format::strip_server_file_extension(name).to_owned())
             } else {
                 None
             }
index b7b3544d92b2c0110f4d5569f41d7c262bc70dd8..88714003dd946319c18634e52a5cc419ac605fc3 100644 (file)
@@ -1,17 +1,19 @@
+use std::borrow::Borrow;
+
 use anyhow::{Error};
 use serde_json::Value;
 
-pub fn strip_server_file_extension(name: &str) -> String {
+pub fn strip_server_file_extension(name: &str) -> &str {
     if name.ends_with(".didx") || name.ends_with(".fidx") || name.ends_with(".blob") {
-        name[..name.len()-5].to_owned()
+        &name[..name.len()-5]
     } else {
-        name.to_owned() // should not happen
+        name // should not happen
     }
 }
 
-pub fn render_backup_file_list(files: &[String]) -> String {
-    let mut files: Vec<String> = files.iter()
-        .map(|v| strip_server_file_extension(&v))
+pub fn render_backup_file_list<S: Borrow<str>>(files: &[S]) -> String {
+    let mut files: Vec<&str> = files.iter()
+        .map(|v| strip_server_file_extension(v.borrow()))
         .collect();
 
     files.sort();