Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 基于Rust中的另一个路径格式化文件名的最佳方法_String_Path_Rust - Fatal编程技术网

String 基于Rust中的另一个路径格式化文件名的最佳方法

String 基于Rust中的另一个路径格式化文件名的最佳方法,string,path,rust,String,Path,Rust,有没有更简洁的方法来写下面的内容 使用std::path::path; 让path=path::new(“/path/to/foo.txt”); 让格式化=&格式化!(“{}%d.{}”,path.file_-stem().unwrap().to_-str().unwrap(),path.extension().unwrap().to_-str().unwrap()); 断言!(“foo%d.txt”,已格式化); (我想把/path/转换成/foo.txt转换成foo%d.txt)不,没有比

有没有更简洁的方法来写下面的内容

使用std::path::path;
让path=path::new(“/path/to/foo.txt”);
让格式化=&格式化!(“{}%d.{}”,path.file_-stem().unwrap().to_-str().unwrap(),path.extension().unwrap().to_-str().unwrap());
断言!(“foo%d.txt”,已格式化);

(我想把
/path/转换成/foo.txt
转换成
foo%d.txt

不,没有比你拥有的更好的了。路径是UTF-8字符串,路径可能有
文件系统或
扩展名。你必须处理所有这些情况,这就是Rust成为一种好语言的原因

我唯一能建议的就是避免转换成UTF-8字符串。如果缺少组件,也可以使用占位符空值或有条件地执行操作:

use std::path::Path;
use std::ffi::OsStr;

fn main() {
    let path = Path::new("/path/to/foo.txt");

    let stem = path.file_stem().unwrap_or(OsStr::new(""));

    let mut filename = stem.to_os_string();
    filename.push("%d.");

    if let Some(extension) = path.extension() {
        filename.push(extension);
    }

    assert_eq!(OsStr::new("foo%d.txt"), filename);
}

这是路径到路径还是字符串到字符串的转换?字符串到路径到字符串,所以我猜字符串到字符串(但我想使用类似
path::file\u-stem
path::extension
)的方法)