使用 Rust 在 Linux 中创建配置目录

问题描述 投票:0回答:0

昨天开始学习 Rust,所以我是一个完全的新手。我想为 linux 制作一个命令行程序作为我的第一个项目。我想要它,所以当您运行程序时,它会检查配置目录

~/.config/my_program/config.toml
是否存在。如果它这样做,它会从 toml 文件加载设置(我可能会为此发布另一篇文章),但如果它不存在,它会创建它并将默认设置放入 toml.

这是我目前所拥有的:

use toml;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    let config_path = "~/.config/my_program/config.toml";
    
    //checks if the director exists
    let config_exists = Path::new(config_path).exists();
    println!("{}", config_exists);

    if !config_exists {
        let default_config = "place_holder";
        match std::fs::create_dir_all("~/.config/my_program"){ //If it doesn't exist it creates the directory
            Err(error) => panic!("Couldn't create config directory: {}", error),
            Ok(file) => file,
        };
        let mut config = match std::fs::File::create(config_path){ //Creates the file itself
            Err(error) => panic!("couldn't create config file: {}", error),
            Ok(file) => file,
        };
        match config.write_all(default_config.as_bytes()){ //Writes the default config to the file
            Err(error) => panic!("Couldn't write defualt config to file: {}", error),
            Ok(_) => println!("Config file created at: {}\nEdit it in order to change some setings.", config_path),
        };

    } 
    
}

但似乎没有什么能很好地与

~
引用主目录。

基本上我在这里需要的是获取正在运行程序的用户并传入完整目录:

"/home/user/.config/my_program/config.toml"
.

我已经用

users::get_current_username().unwrap()
试过了,但是它返回了一个 0sString ,它不能轻易地与普通 &str 组合并作为参数传入。

因此,要么学习如何将 0sString 转换为 &str,要么尝试一种全新的方法。

提前感谢大家!

linux rust directory config create-directory
© www.soinside.com 2019 - 2024. All rights reserved.