Rust常见库使用示例。
标准库
命令行参数
use std::env;
fn main() {
let args: Vec<String> = env::args().collect(); // env::args_os() -> OsString
println!("{:?}, args[0]: {:?}", args, &args[0])
}
$ cargo run abcdef
Compiling test123 v0.1.0 (/Users/xiexianbin/workspace/code/github.com/xiexianbin/rust-study/test123)
Finished dev [unoptimized + debuginfo] target(s) in 0.62s
Running `target/debug/test123 abcdef`
["target/debug/test123", "abcdef"], args[0]: "target/debug/test123"
use std::{env, process};
#[derive(Debug)]
pub struct Config {
pub name: String,
}
impl Config {
fn new(args: &[String]) -> Result<Config, &'static str> {
if args.len() < 2 {
return Err("not enough args.")
}
let name = args[1].clone(); // 解决所有权问题
Ok(Config{name})
}
}
fn main() {
let args: Vec<String> = env::args().collect(); // env::args_os() -> OsString
// let c = Config::new(&args);
// match c {
// Ok(config) => println!("{:?}, args[0]: {:?}", config, config.name),
// Err(msg) => println!("{}", msg)
// }
let c = Config::new(&args).unwrap_or_else(|err| {
println!("Occur Error: {}", err);
process::exit(1); // 使 println 的输出无 debug 信息
});
println!("{:?}, args[0]: {:?}", c, c.name)
}
读文件
use std::fs;
fn main() {
let c = fs::read_to_string("./main.rs").expect("file main.rs not found.");
println!("{:?}", c);
}
读环境变量
use std::env;
let name = env::var("ENV_NAME").is_err();
sleep
use std::thread;
use std::time::Duration;
// sleep 1 second
thread::sleep(Duration::from_secs(1));