changeset 46596:d2e61f00ee9d

rust: Introduce a get_bytes_from_os_str utility function It does the same as get_bytes_from_path but takes an `OsStr` instead of a `Path`. The implementation is the same so using either ends up correct but the function name suggests it’s not. Differential Revision: https://phab.mercurial-scm.org/D10007
author Simon Sapin <simon.sapin@octobus.net>
date Wed, 17 Feb 2021 11:21:34 +0100
parents 98a455a62699
children 305d74c262de
files rust/hg-core/src/config/config.rs rust/hg-core/src/utils/files.rs rust/rhg/src/main.rs
diffstat 3 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/rust/hg-core/src/config/config.rs	Wed Feb 17 12:24:53 2021 +0100
+++ b/rust/hg-core/src/config/config.rs	Wed Feb 17 11:21:34 2021 +0100
@@ -11,7 +11,7 @@
 use crate::config::layer::{
     ConfigError, ConfigLayer, ConfigParseError, ConfigValue,
 };
-use crate::utils::files::get_bytes_from_path;
+use crate::utils::files::get_bytes_from_os_str;
 use format_bytes::{write_bytes, DisplayBytes};
 use std::env;
 use std::path::{Path, PathBuf};
@@ -134,8 +134,7 @@
             layer.add(
                 section.to_owned(),
                 key.to_owned(),
-                // `value` is not a path but this works for any `OsStr`:
-                get_bytes_from_path(value),
+                get_bytes_from_os_str(value),
                 None,
             );
             self.layers.push(layer)
--- a/rust/hg-core/src/utils/files.rs	Wed Feb 17 12:24:53 2021 +0100
+++ b/rust/hg-core/src/utils/files.rs	Wed Feb 17 11:21:34 2021 +0100
@@ -17,6 +17,7 @@
 use lazy_static::lazy_static;
 use same_file::is_same_file;
 use std::borrow::{Cow, ToOwned};
+use std::ffi::OsStr;
 use std::fs::Metadata;
 use std::iter::FusedIterator;
 use std::ops::Deref;
@@ -40,8 +41,13 @@
 // that's why Vec<u8> is returned.
 #[cfg(unix)]
 pub fn get_bytes_from_path(path: impl AsRef<Path>) -> Vec<u8> {
+    get_bytes_from_os_str(path.as_ref())
+}
+
+#[cfg(unix)]
+pub fn get_bytes_from_os_str(str: impl AsRef<OsStr>) -> Vec<u8> {
     use std::os::unix::ffi::OsStrExt;
-    path.as_ref().as_os_str().as_bytes().to_vec()
+    str.as_ref().as_bytes().to_vec()
 }
 
 /// An iterator over repository path yielding itself and its ancestors.
--- a/rust/rhg/src/main.rs	Wed Feb 17 12:24:53 2021 +0100
+++ b/rust/rhg/src/main.rs	Wed Feb 17 11:21:34 2021 +0100
@@ -70,8 +70,7 @@
     };
 
     let config_args = values_of_global_arg("config")
-        // `get_bytes_from_path` works for OsStr the same as for Path
-        .map(hg::utils::files::get_bytes_from_path);
+        .map(hg::utils::files::get_bytes_from_os_str);
     let non_repo_config = &hg::config::Config::load(config_args)?;
 
     let repo_path = value_of_global_arg("repository").map(Path::new);