In this video I give a guided tour over features dealing with the environment of a process.
use std::env;
use std::collections::HashMap;
use std::ffi::OsString;
fn main() {
let a : Vec<String> = env::args().collect();
println!("Args: {a:?}");
let a : Vec<OsString> = env::args_os().collect();
println!("Args: {a:?}");
let m : HashMap<String, String> = env::vars().collect();
println!("Env: {m:?}");
let m : HashMap<OsString, OsString> = env::vars_os().collect();
println!("Env: {m:?}");
}
use std::env;
fn main() {
let mut pwd = env::current_dir().unwrap();
println!("Current working directory: {:?}", pwd);
for f in pwd.iter() {
println!("{:?}", f);
}
pwd.pop();
println!("One up: {:?}", pwd);
pwd.push("xyz");
println!("And down again: {:?}", pwd);
let key = "PATH";
match env::var_os(key) {
Some(paths) => {
for path in env::split_paths(&paths) {
println!("'{}'", path.display());
}
}
None => println!("{key} is not defined in the environment."),
}
println!("Current executable: {:?}", env::current_exe());
println!("Temporary directory: {:?}", env::temp_dir());
println!("Path: {:?}", pwd.as_path().to_str().unwrap());
}
use std::fs;
fn main() {
let mut pwd = std::env::current_dir().unwrap();
let mut builder = fs::DirBuilder::new();
builder.recursive(true).create("a/b/c").unwrap();
pwd.push("a");
let dir = fs::read_dir(pwd).unwrap();
for f in dir {
let ff = f.unwrap();
println!("{:?} {:?} {:?}", ff, ff.path(), ff.metadata());
}
}
use std::env;
fn main() {
let args : Vec<String> = env::args().collect();
if args.len() > 1 && args[1] == "yes" {
std::process::exit(0);
} else {
std::process::exit(17);
}
}
- Module
std::env
: https://doc.rust-lang.org/std/env/index.html - Module
std::fs
: https://doc.rust-lang.org/std/fs/index.html - Module
std::process
: https://doc.rust-lang.org/std/process/index.html - Video: https://youtu.be/_K8FKYinI-8
- Overview: https://gist.github.com/max-itzpapalotl/18f7675a60f6f9603250367bcb63992e