当前位置:网站首页>Rust:命令行参数与环境变量操作
Rust:命令行参数与环境变量操作
2020-11-08 08:59:00 【osc_sejhgcp0】
Rust中,经常碰到命令行参数和环境变量操作。下面主要来了解一下。
一、命令行参数

从上面可以看到,std::env实现了从cargo run 命令行中提取命令行参数 a b c进入程序。
二、读取环境变量
std::env::var函数,实现了操作系统中环境变量的功能。
env::var()-> std::env::Vars
Vars是什么,很复杂,他实现了Iterator.以下是标准库中源码:
#[stable(feature = "env", since = "1.0.0")]
pub struct Vars {
inner: VarsOs,
}
/// An iterator over a snapshot of the environment variables of this process.
///
/// This structure is created by the [`std::env::vars_os`] function. See
/// its documentation for more.
///
/// [`std::env::vars_os`]: vars_os
#[stable(feature = "env", since = "1.0.0")]
pub struct VarsOs {
inner: os_imp::Env,
}
需要说明的是,环境变量中,字符并不一定是Unicode标准的,这样就会报错。这时可以用:
env::vars_os
再往下:读取特定环境变量操作
use std::env;
fn main() {
let args: Vec<String> = env::args().collect();
//println!("get command args :{:?} ", args);
//println!("get env args : ");
for (key, value) in env::vars() {
//println!(" {} => {}", key, value);
}
let key = "PATH";
match env::var(key) {
Ok(val) => {
// val is String, splited by ";"
println!("val =>{}",val);
},
Err(e) => println!("couldn't interpret {}: {}", key, e),
}
}
三、设置环境变量
一般包括:查看所有环境变量、设置新的环境变量和修改老的环境变量。
1、在cmd下


上面分别做了设置,查看单独环境变量操作、修改操作。还是比较简单。
2、powshell
#查看所有环境变量 ls env:
#搜索环境变量 ls env:NODE*
#查看单个环境变量 $env:NODE_ENV
#添加/更新环境变量 $env:NODE_ENV=development
#删除环境变量 del evn:NODE_ENV
3、linux
修改bashrc文件,这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,这里是针对某一特定的用户,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的
.bashrc文件就可以了。vi ~/.bashrc
在下面添加:
Export PATH="$PATH:/NEW_PATH"
资料来源:
https://www.cnblogs.com/Joans/p/7760378.html
版权声明
本文为[osc_sejhgcp0]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4324904/blog/4707890
边栏推荐
- c# 表达式树(一)
- C expression tree (1)
- 微信昵称emoji表情,特殊表情导致列表不显示,导出EXCEL报错等问题解决!
- 面部识别:攻击类型和反欺骗技术
- M 端软件产品设计思虑札记 - 知乎
- Summary of knowledge points of Jingtao project
- More than 50 object detection datasets from different industries
- Mate 40 series launch with Huawei sports health service to bring healthy digital life
- Learn Scala if Else statement
- Oschina plays on Sunday - before that, I always thought I was a
猜你喜欢

print( 'Hello,NumPy!' )

Cloud Alibabab笔记问世,全网详解仅此一份手慢无

Littlest jupyterhub| 02 using nbgitpuller to distribute shared files

iOS 学习笔记二【cocopods安装使用和安装过程中遇到的问题及解决办法】【20160725更新】

Is there a big difference between i5 1135g7 and i51035g1? Which is better?

1.深入Istio:Sidecar自动注入如何实现的?

C language I blog assignment 03

5G+AR出圈,中国移动咪咕成第33届中国电影金鸡奖全程战略合作伙伴

UCGUI简介

Review the cloud computing application scenarios you didn't expect (Part 1)
随机推荐
2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?
More than 50 object detection datasets from different industries
GET,POST,PUT,DELETE,OPTIONS用法与说明
2020天翼智能生态博览会中国电信宣布5G SA正式规模商用
How can a technician take over a complex system?
Six key points of data science interview
哔哩哔哩常用api
Python loop distinction (while loop and for loop)
QT hybrid Python development technology: Python introduction, hybrid process and demo
Mouse small hand
鼠标变小手
print( 'Hello,NumPy!' )
Littlest JupyterHub| 02 使用nbgitpuller分发共享文件
NOIP 2012 提高组 复赛 第一天 第二题 国王游戏 game 数学推导 AC代码(高精度 低精度 乘 除 比较)+60代码(long long)+20分代码(全排列+深搜dfs)
Shiyou's numerical analysis assignment
PCR and PTS calculation and inverse operation in TS stream
Search and replace of sed
[original] about the abnormal situation of high version poi autosizecolumn method
Macquarie Bank drives digital transformation with datastex enterprise (DSE)
ulab 1.0.0发布