當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。