Function std::env::join_paths 1.0.0[−][src]
pub fn join_paths<I, T>(paths: I) -> Result<OsString, JoinPathsError> where
I: IntoIterator<Item = T>,
T: AsRef<OsStr>,
Expand description
为 PATH
环境变量适当地加入 Path 的集合。
Errors
如果输入 Path 之一包含用于构造 PATH
变量的无效字符 (Windows 上的双引号或 Unix 上的冒号),则返回 Err
(包含错误消息)。
Examples
在类似 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(()) }Run
在类似 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());Run
将 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(()) }Run