Rust 标准库

发布时间: 更新时间: 总字数:230 阅读时间:1m 作者: 分享 复制网址

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"
  • 结合 struct 的示例
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));
最新评论
加载中...
Home Archives Categories Tags Statistics