最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

rust標準庫std::env環(huán)境相關(guān)的常量

 更新時間:2024年03月26日 11:21:37   作者:1024小神  
在本章節(jié)中, 我們探討了Rust處理命令行參數(shù)的常見的兩種方式和處理環(huán)境變量的兩種常見方式, 拋開Rust的語法, 實際上在命令行參數(shù)的處理方式上, 與其它語言大同小異, 可能影響我們習(xí)慣的也就只剩下語法,本文介紹rust標準庫std::env的相關(guān)知識,感興趣的朋友一起看看吧

rust標準庫std::env環(huán)境相關(guān)的常量

在env這個庫中,有一些環(huán)境相關(guān)的常量,這些常量在std::env::consts這個模塊下面,通過這個依賴庫可以獲取到當前程序所運行的環(huán)境和運行的目錄地址等信息。

env 常量

std::env下面一些系統(tǒng)相關(guān)的常量:

ARCH	
DLL_EXTENSION
DLL_PREFIX	
DLL_SUFFIX	
EXE_EXTENSION
EXE_SUFFIX	
FAMILY
OS

我們在ubuntu下將這些常量打印出來看一下:

    use std::env;
    println!("ARCH = {}", env::consts::ARCH);
    println!("DLL_EXTENSION = {}", env::consts::DLL_EXTENSION);
    println!("DLL_PREFIX = {}", env::consts::DLL_PREFIX);
    println!("DLL_SUFFIX = {}", env::consts::DLL_SUFFIX);
    println!("EXE_EXTENSION = {}", env::consts::EXE_EXTENSION);
    println!("EXE_SUFFIX = {}", env::consts::EXE_SUFFIX);
    println!("FAMILY = {}", env::consts::FAMILY);
    println!("OS = {}", env::consts::OS);
// 顯示結(jié)果:
ARCH = x86_64
DLL_EXTENSION = so
DLL_PREFIX = lib
DLL_SUFFIX = .so
EXE_EXTENSION = 
EXE_SUFFIX = 
FAMILY = unix
OS = linux

常用函數(shù) 

std::env模塊下有如下函數(shù):

args	返回命令行傳遞的參數(shù)
args_os	返回當前進程的參數(shù)
current_dir	返回當前的工作目錄,該目錄保存在PathBuf中
current_exe	返回當前可執(zhí)行程序的全路徑
home_dir	返回當前用戶目錄的路徑
join_paths	添加一些環(huán)境變量到PATH這個變量中
remove_var	刪除當前運行進程的環(huán)境變量(系統(tǒng)中的環(huán)境變量不會改變,只改變當前進程的環(huán)境變量)
set_current_dir	指定當前可執(zhí)行程序的工作目錄
set_var	將當前進程的環(huán)境變量修改為新的值
split_paths	Parses input according to platform conventions for the PATH environment variable.
temp_dir	返回臨時文件所存放的目錄
var	從當前進程獲取環(huán)境變量,通過環(huán)境變量的key值獲取value值
var_os	Fetches the environment variable key from the current process, returning None if the variable isn't set.
vars	Returns an iterator of (variable, value) pairs of strings, for all the environment variables of the current process.
vars_os	Returns an iterator of (variable, value) pairs of OS strings, for all the environment variables of the current process.

補充:

在Rust中處理命令行參數(shù)和環(huán)境變量

1.摘要

Rust的命令行和環(huán)境變量處理在標準庫中提供了一整套實現(xiàn)方法, 在本文中除了探索標準庫的使用方法之外, 也在不斷適應(yīng)Rust獨有的語法特點。在本文中, 我們通過標準庫函數(shù)的返回值熟悉了迭代器的使用方法, 操作迭代器精確控制保存的內(nèi)容, 包括字符串和鍵值對的使用方法。

2.讀取參數(shù)值

在Rust編程中要讀取命令行參數(shù)的值, 標準庫提供了一個函數(shù): std::env::args, 該函數(shù)返回一個傳遞給命令行參數(shù)的迭代器, 迭代器中保存了所有參數(shù)內(nèi)容, 調(diào)用者需要調(diào)用collect方法將其轉(zhuǎn)換成一個集合, 先看一段示例代碼:

use std::env;
?
fn main() {
    let args: Vec<String> = env::args().collect();
    dbg!(args);
}

在上面的代碼中, 首先使用use語句將std::env模塊引入作用域以便使用它的args函數(shù)。然后調(diào)用其collect()方法, 該方法將接收命令行所有參數(shù)內(nèi)容并保存到變量args中, 接著使用dbg!宏打印了args的內(nèi)容。

現(xiàn)在將這段代碼編譯執(zhí)行會發(fā)現(xiàn)沒有任何內(nèi)容輸出, 這是因為執(zhí)行運行沒有參數(shù)信息, 現(xiàn)在我們設(shè)計一個場景, 通過search參數(shù)來搜索一個文件, 完整命令如下:

cargo run -- search filename.txt

注意: 參數(shù)符號"--"與參數(shù)名之間有空格。

執(zhí)行結(jié)果如下:

從返回的結(jié)果來看, 集合中保存了三個參數(shù), 實際上第一個參數(shù)是我們二進制文件名稱, 這跟C語言中的參數(shù)列表的行為很類似, 除了獲取到調(diào)用的程序名稱, 還包括所有以空格隔開的參數(shù)名稱。

3.將參數(shù)值保存到變量

在上面的例子中, 參數(shù)內(nèi)容保存到了args變量中, 下面修改一下程序,代碼如下:

use std::env;
?
fn main() {
    let args: Vec<String> = env::args().collect();
    let param_name = &args[1];
    let file_name = &args[2];
    println!("第一個參數(shù)名:{}", param_name);
    println!("第二個參數(shù)名:{}", file_name);
}

在上面的代碼中, 我們根據(jù)數(shù)組索引來取變量名稱, 例如: args[0]對應(yīng)是集合中的第一個元素, 也就是二進制程序名, 這個不是我們需要的, 如果要取參數(shù)search的內(nèi)容, 使用args[1], 取文件名使用args[2], 以此類推。

執(zhí)行結(jié)果如下:

通過不同的變量分別接收不同的參數(shù)名, 在程序后面的邏輯中, 就可以使用這些保存獨立參數(shù)的變量名了。

4.處理環(huán)境變量

在std::env模塊中, 標準庫同樣提供了獲取環(huán)境變量的函數(shù),為: env::vars(), 下面的代碼將把我這臺電腦的環(huán)境變量全部打印出來:

use std::env;
?
fn main() {
    for (key, value) in env::vars() {
        println!("{} => {}", key, value);
    }
}

同樣, env::vars()返回的也是一個迭代器, 不同的是, 數(shù)據(jù)結(jié)構(gòu)是以key:value對的形式保存, 程序中分別將key和value進行打印:

下面我們在程序中增加一項功能, 因為打印的參數(shù)實在太多, 我想把Path環(huán)境變量的內(nèi)容打印出來該怎么做呢?,修改以下代碼:

use std::env;
?
fn main() {
    let search_key = "PATH";
    match env::var(search_key) {
        Ok(val) => {
            println!("PATH變量保存的內(nèi)容為:{}", val);
        },
        Err(e) => println!("無法找到key:{}, 錯誤為:{}", search_key, e)
    }
}

在上面的代碼中, 我定義了一個需要搜索的Key名為"PATH", 并使用match正則直接在env::var()的返回迭代器中搜索Key名,這里env::var(param)為什么可以接收參數(shù)呢? 進入env.rs源碼可以看到以下代碼:

env::var()接收需要搜索的Key,返回了一個Result<T, E>類型, 上面還給了一個使用的示例。

從env:var()函數(shù)內(nèi)部,我們可以看到返回的是一個Result<String, VarError>類型,因此,如果獲取成功,在Ok()宏中可以設(shè)置參數(shù)接收結(jié)果,而使用Err()宏接收可能因失敗返回的錯誤, 先看下成功的情況, 打印PATH環(huán)境變量內(nèi)容如下:

現(xiàn)在再看一個搜索失敗的情況, 將要搜索的key的內(nèi)容修改為: "SUNTIGER", 執(zhí)行結(jié)果如下:

此時將走另一個流程, 利用Err()宏打印錯誤信息。

除此之外, std::env包中還包含其他的一些方法, 例如:設(shè)置環(huán)境變量:set_var()、刪除當前運行進程的環(huán)境變量:remove_var()等,感興趣的可以查看Rust的官方文檔, 這里不再贅述。

5.總結(jié)

在本章節(jié)中, 我們探討了Rust處理命令行參數(shù)的常見的兩種方式和處理環(huán)境變量的兩種常見方式, 拋開Rust的語法, 實際上在命令行參數(shù)的處理方式上, 與其它語言大同小異, 可能影響我們習(xí)慣的也就只剩下語法。Rust在某些機制實現(xiàn)上跟Go語言比起來可能略顯繁瑣, 但我們在學(xué)習(xí)任何語言的時候首先要想到每種編程語言的主要特點, 例如: Go語言主打一個語法簡潔和高并發(fā), 因此學(xué)習(xí)Go語言上手感覺特別快, 而且在處理高并發(fā)過程中, Go語言的協(xié)程和通道使用起來特別容易,性能也非常不錯。而Rust的主打特點是內(nèi)存安全, 要將這種安全思想貫穿全局, Rust會強行轉(zhuǎn)換使用它的每個人的編程思想, 而Rust編譯器就像映射的鏡子, 任何不好的編程習(xí)慣和疏忽換來的都是紅色的錯誤提示。

到此這篇關(guān)于rust標準庫std::env環(huán)境相關(guān)的常量的文章就介紹到這了,更多相關(guān)rust標準庫std::env內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode搭建rust開發(fā)環(huán)境的圖文教程

    vscode搭建rust開發(fā)環(huán)境的圖文教程

    本文主要介紹了vscode搭建rust開發(fā)環(huán)境的圖文教程,文中通過圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Rust中自定義Debug調(diào)試輸出的示例詳解

    Rust中自定義Debug調(diào)試輸出的示例詳解

    這篇文章主要介紹了Rust中自定義Debug調(diào)試輸出的示例詳解,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Rust Struct結(jié)構(gòu)體詳解

    Rust Struct結(jié)構(gòu)體詳解

    結(jié)構(gòu)體,是一種自定義數(shù)據(jù)類型,允許程序員將不同類型的數(shù)據(jù)結(jié)合起來,形成相關(guān)聯(lián)的整體。Rust的結(jié)構(gòu)體還提供方法和關(guān)聯(lián)函數(shù),可以指定那些與結(jié)構(gòu)體數(shù)據(jù)相關(guān)的行為
    2022-10-10
  • 詳解Rust中泛型的使用

    詳解Rust中泛型的使用

    泛型是一種在編寫代碼時不指定具體類型,而在使用時再確定類型的編程技巧,本文將詳細介紹?Rust?中泛型的相關(guān)概念和用法,希望對大家有所幫助
    2023-06-06
  • RUST語言函數(shù)的定義與調(diào)用方法

    RUST語言函數(shù)的定義與調(diào)用方法

    定義一個RUST函數(shù)使用fn關(guān)鍵字,下面通過本文給大家介紹RUST語言函數(shù)的定義與調(diào)用方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • MacBook Pro安裝rust編程環(huán)境的過程

    MacBook Pro安裝rust編程環(huán)境的過程

    rustup是一個用于管理Rust版本和工具鏈的工具,這篇文章主要介紹了MacBook Pro安裝rust編程環(huán)境的過程,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • 淺析Rust多線程中如何安全的使用變量

    淺析Rust多線程中如何安全的使用變量

    這篇文章主要為大家詳細介紹了Rust如何在線程的閉包中安全的使用變量,包括共享變量和修改變量,文中的示例代碼講解詳細,有需要的小伙伴可以參考下
    2025-01-01
  • Rust文件I/O操作多種場景應(yīng)用筆記

    Rust文件I/O操作多種場景應(yīng)用筆記

    這篇文章主要介紹了Rust文件I/O操作多種場景的應(yīng)用,Rust的文件I/O操作提供了豐富的功能,從基本的文件讀寫到高級的目錄操作、元數(shù)據(jù)獲取、臨時文件和異步I/O,通過掌握這些高級應(yīng)用,我們可以編寫更加高效、可靠的文件操作代碼,需要的朋友可以參考下
    2026-05-05
  • Rust如何進行模塊化開發(fā)技巧分享

    Rust如何進行模塊化開發(fā)技巧分享

    Rust模塊化,模塊化有助于代碼的管理和層次邏輯的清晰,本文主要介紹了Rust如何進行模塊化開發(fā),結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Rust中Cargo的使用詳解

    Rust中Cargo的使用詳解

    Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,?多數(shù) Rustacean 們使? Cargo 來管理他們的 Rust 項?,因為它可以為你處理很多任務(wù),?如構(gòu)建代碼、下載依賴庫并編譯這些庫,這篇文章主要介紹了Rust中Cargo的使用,需要的朋友可以參考下
    2022-11-11

最新評論

延边| 纳雍县| 茌平县| 平罗县| 东辽县| 大洼县| 大连市| 凉山| 嫩江县| 海盐县| 五常市| 临沭县| 长宁区| 灵丘县| 淳化县| 吴旗县| 黎平县| 双峰县| 樟树市| 肇庆市| 徐汇区| 会宁县| 绥江县| 定陶县| 富蕴县| 西林县| 山西省| 桃源县| 沙河市| 胶南市| 富平县| 固阳县| 筠连县| 沧州市| 隆昌县| 葵青区| 木兰县| 闽清县| 新兴县| 龙陵县| 贵南县|