如何解决PathBuf :: from&some_other_pathbuf会克隆some_other_pathbuf的数据吗?
我正在编写一个custom_rename
函数,该函数接收一个String
和一个对PathBuf
的不变引用:
fn custom_rename(new_name: String,old_path: &PathBuf) {
let mut new_path = PathBuf::from(&old_path);
new_path.pop();
new_path.push(new_name);
std::fs::rename(old_path,new_path).expect("error");
}
PathBuf::from()
函数是否克隆old_path
的数据?根据{{3}},Rustaceans尝试避免克隆。
解决方法
是的,PathBuf
拥有数据。带有引用时,拥有数据的唯一方法是克隆数据。
我会这样写
use std::{fs,path::Path};
fn custom_rename(new_name: &str,old_path: &Path) {
let mut new_path = old_path.to_owned();
new_path.pop();
new_path.push(new_name);
fs::rename(old_path,new_path).expect("error");
}
另请参阅:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。