本文简要介绍rust语言中 Function std::env::join_paths
的用法。
用法
pub fn join_paths<I, T>(paths: I) -> Result<OsString, JoinPathsError> where I: IntoIterator<Item = T>, T: AsRef<OsStr>,
为 PATH
环境变量适当地加入 Path
的集合。
错误
如果输入 Path
之一包含用于构造 PATH
变量的无效字符(Windows 上的双引号或 Unix 上的冒号),则返回 Err
(包含错误消息)。
例子
在类 Unix 平台上加入路径:
use std::env;
use std::ffi::OsString;
use std::path::Path;
fn main() -> Result<(), env::JoinPathsError> {
let paths = [Path::new("/bin"), Path::new("/usr/bin")];
let path_os_string = env::join_paths(paths.iter())?;
assert_eq!(path_os_string, OsString::from("/bin:/usr/bin"));
Ok(())
}
在类 Unix 平台上加入包含冒号的路径会导致错误:
use std::env;
use std::path::Path;
let paths = [Path::new("/bin"), Path::new("/usr/bi:n")];
assert!(env::join_paths(paths.iter()).is_err());
使用 env::join_paths()
和 env::split_paths()
将项目附加到 PATH
环境变量:
use std::env;
use std::path::PathBuf;
fn main() -> Result<(), env::JoinPathsError> {
if let Some(path) = env::var_os("PATH") {
let mut paths = env::split_paths(&path).collect::<Vec<_>>();
paths.push(PathBuf::from("/home/xyz/bin"));
let new_path = env::join_paths(paths)?;
env::set_var("PATH", &new_path);
}
Ok(())
}
相关用法
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust AtomicU8.fetch_sub用法及代码示例
- Rust PanicInfo.payload用法及代码示例
- Rust MaybeUninit.assume_init_mut用法及代码示例
- Rust String.try_reserve用法及代码示例
- Rust Mutex.new用法及代码示例
- Rust f32.exp用法及代码示例
- Rust Result.unwrap_or_else用法及代码示例
- Rust slice.sort_unstable_by_key用法及代码示例
- Rust Formatter.precision用法及代码示例
- Rust i128.log2用法及代码示例
- Rust OsStr.to_ascii_uppercase用法及代码示例
- Rust f32.hypot用法及代码示例
- Rust RefCell.try_borrow_unguarded用法及代码示例
- Rust i16.log10用法及代码示例
- Rust LowerExp用法及代码示例
- Rust HashSet.get_or_insert_with用法及代码示例
- Rust Bound.cloned用法及代码示例
- Rust NonZeroU128.checked_pow用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::env::join_paths。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。