rust - PathBuf::from(&some_other_pathbuf) 是否克隆了 some_other_pathbuf 的数据?
问题描述
我正在编写一个custom_rename
函数,它接收 aString
和对 a 的不可变引用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
?根据The Rust Programming Language,Rustaceans 尽量避免克隆。
解决方案
是的,aPathBuf
拥有数据。在出现引用时拥有数据的唯一方法是克隆它。
我会把它写成
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");
}
也可以看看:
推荐阅读
- python - print(i) for i in a 返回“无”?
- python - Python:数组搜索改进
- machine-learning - 多项式回归没有给出正确的假设
- excel - Excel公式查找第二个最大值或最大值(如果只有一个值)
- ios - 如果.srt文件包含多行字幕文本,如何在swift中使用Scanner解析它?
- java - Java验证日期是否在本周
- mysql - 错误 1290:secure_file_priv
- java - 两个整数都可以大于 Integer.MAX_VALUE 的数字吗?
- python - 创建 Numpy 数组或可变长度数组
- c++ - Qt:如何从另一个类调用主窗口的指针?