我当前的解决方案是:
let temp = format!(
"{}.png",
path.file_stem().unwrap().to_string_lossy());
path.pop();
path.push(&temp);
这相当难看,需要至少 6 次函数调用并创建一个新字符串。
有没有更惯用、更短或更有效的方法来做到这一点?
PathBuf
提供了方法set_extension https://doc.rust-lang.org/std/path/struct.PathBuf.html#method.set_extension。如果扩展名尚不存在,它将添加它;如果存在,它将用新的扩展名替换它。
let mut path = PathBuf::from("path/to/file");
path.set_extension("png");
assert_eq!(&path.to_string_lossy(), "path/to/file.png");
let mut path = PathBuf::from("path/to/file.jpg");
path.set_extension("png");
assert_eq!(&path.to_string_lossy(), "path/to/file.png");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)