Merge pull request #156 from ouch-org/cur-dir-cow

Avoid allocating in `nice_directory_display` when possible, make `Extension` non-exhaustive
This commit is contained in:
João Marcos Bezerra 2021-11-03 18:40:23 -03:00 committed by GitHub
commit e1378b3ac6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View File

@ -6,6 +6,7 @@ use self::CompressionFormat::*;
/// A wrapper around `CompressionFormat` that allows combinations like `tgz`
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub struct Extension {
/// One extension like "tgz" can be made of multiple CompressionFormats ([Tar, Gz])
pub compression_formats: &'static [CompressionFormat],
@ -35,7 +36,7 @@ impl Extension {
impl fmt::Display for Extension {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(&self.display_text)
self.display_text.fmt(f)
}
}

View File

@ -1,6 +1,7 @@
//! Random stuff used on ouch.
use std::{
borrow::Cow,
cmp, env,
ffi::OsStr,
io,
@ -109,12 +110,12 @@ pub fn concatenate_list_of_os_str(os_strs: &[impl AsRef<OsStr>]) -> String {
}
/// Display the directory name, but change to "current directory" when necessary.
pub fn nice_directory_display(os_str: impl AsRef<OsStr>) -> String {
let text = to_utf(os_str);
if text == "." {
"current directory".to_string()
pub fn nice_directory_display(os_str: impl AsRef<OsStr>) -> Cow<'static, str> {
if os_str.as_ref() == "." {
Cow::Borrowed("current directory")
} else {
format!("'{}'", text)
let text = to_utf(os_str);
Cow::Owned(format!("'{}'", text))
}
}