< 返回我的博客

rdigua 发表于 2020-03-25 03:06

Tags:随笔

感觉自己在开历史的倒车 没有理解 rust的相关概念 拿以往的经验生套 需要闭关 多看

    if let Some(td) = env::home_dir() {
        dir = td;
        dir.push(".config");
    } else { 
        if let Ok(td1) = env::current_dir() {
            dir = td1;
            dir.push(".config");
        } else {
            dir = PathBuf::new();
        }
    };


fn get_home_dir() -> String {
    let dir: PathBuf = match env::home_dir() {
        Some(path) => PathBuf::from(path),
        None => PathBuf::from(""),
    };
    dir.to_str().unwrap().to_string()
}


fn get_config_dir() -> String {
    let dir: PathBuf = match env::home_dir() {
        Some(path) => PathBuf::from(path),
        None => PathBuf::from(""),
    };
    let mut s=dir.to_str().unwrap().to_string();
    if s.len() > 0 {
    s.push_str(".config")

}
s
}

评论区

写评论
Neutron3529 2020-05-28 11:42

上面那个写错的passwd是从https://doc.rust-lang.org/std/path/struct.Path.html复制代码的时候忘记改掉的…… 对以下内容的回复:

Neutron3529 2020-05-28 11:41

你的第一段代码完全可以写得简单些 (上面是我把你的代码片段改成可以应用的版本,不得已加了一个mut) (下面的版本(理应)是rust风格的版本,可以避免使用mut记号,以增强程序的稳健性) (BTW,好像rust已经准备弃用env::home_dir了,或许应该换一个新函数)

use std::env;
use std::path::PathBuf;
fn main(){
    let mut dir;
    if let Some(td) = env::home_dir() {
        dir = td;
        dir.push(".config");
    } else { 
        if let Ok(td1) = env::current_dir() {
            dir = td1;
            dir.push(".config");
        } else {
            dir = PathBuf::new();
        }
    };
    println!("{:?}",dir)
}
use std::env;
use std::path::PathBuf;
fn main(){
    let dir = if let Some(td) = env::home_dir() {
        td.join(".config")
    } else { 
        if let Ok(td) = env::current_dir() {
            td.join("passwd")
        } else {
            PathBuf::new()
        }
    };
    println!("{:?}",dir)
Mike Tang 2020-03-30 16:48

多写写,迎接新思维。

1 共 3 条评论, 1 页