summaryrefslogtreecommitdiffstats
path: root/vendor/sysinfo/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sysinfo/src/utils.rs')
-rw-r--r--vendor/sysinfo/src/utils.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/vendor/sysinfo/src/utils.rs b/vendor/sysinfo/src/utils.rs
new file mode 100644
index 000000000..578ab61c6
--- /dev/null
+++ b/vendor/sysinfo/src/utils.rs
@@ -0,0 +1,61 @@
+// Take a look at the license at the top of the repository in the LICENSE file.
+
+/* convert a path to a NUL-terminated Vec<u8> suitable for use with C functions */
+#[cfg(all(
+ not(feature = "unknown-ci"),
+ any(target_os = "linux", target_os = "android", target_vendor = "apple")
+))]
+pub(crate) fn to_cpath(path: &std::path::Path) -> Vec<u8> {
+ use std::{ffi::OsStr, os::unix::ffi::OsStrExt};
+
+ let path_os: &OsStr = path.as_ref();
+ let mut cpath = path_os.as_bytes().to_vec();
+ cpath.push(0);
+ cpath
+}
+
+/// Converts the value into a parallel iterator (if the multithread feature is enabled)
+/// Uses the rayon::iter::IntoParallelIterator trait
+#[cfg(all(
+ all(
+ any(
+ target_os = "linux",
+ target_os = "android",
+ target_os = "macos",
+ target_os = "windows",
+ target_os = "freebsd",
+ ),
+ feature = "multithread"
+ ),
+ not(feature = "apple-sandbox"),
+ not(feature = "unknown-ci")
+))]
+pub(crate) fn into_iter<T>(val: T) -> T::Iter
+where
+ T: rayon::iter::IntoParallelIterator,
+{
+ val.into_par_iter()
+}
+
+/// Converts the value into a sequential iterator (if the multithread feature is disabled)
+/// Uses the std::iter::IntoIterator trait
+#[cfg(all(
+ all(
+ any(
+ target_os = "linux",
+ target_os = "android",
+ target_os = "macos",
+ target_os = "windows",
+ target_os = "freebsd",
+ ),
+ not(feature = "multithread")
+ ),
+ not(feature = "unknown-ci"),
+ not(feature = "apple-sandbox")
+))]
+pub(crate) fn into_iter<T>(val: T) -> T::IntoIter
+where
+ T: IntoIterator,
+{
+ val.into_iter()
+}