D10007: rust: Introduce a get_bytes_from_os_str utility function
SimonSapin
phabricator at mercurial-scm.org
Wed Feb 17 12:59:22 UTC 2021
SimonSapin created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
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.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D10007
AFFECTED FILES
rust/hg-core/src/config/config.rs
rust/hg-core/src/utils/files.rs
rust/rhg/src/main.rs
CHANGE DETAILS
diff --git a/rust/rhg/src/main.rs b/rust/rhg/src/main.rs
--- a/rust/rhg/src/main.rs
+++ b/rust/rhg/src/main.rs
@@ -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);
diff --git a/rust/hg-core/src/utils/files.rs b/rust/hg-core/src/utils/files.rs
--- a/rust/hg-core/src/utils/files.rs
+++ b/rust/hg-core/src/utils/files.rs
@@ -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.
diff --git a/rust/hg-core/src/config/config.rs b/rust/hg-core/src/config/config.rs
--- a/rust/hg-core/src/config/config.rs
+++ b/rust/hg-core/src/config/config.rs
@@ -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)
To: SimonSapin, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list