当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust join_paths用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Function std::env::join_paths。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。