我对Rust还是比较陌生,在其他论坛或SO中似乎找不到合适的答案。
我有一个字符串值,要作为命令行参数公开给我的程序。如果不可用,我想使用默认设置。默认值需要在运行时计算,因为它基于可执行路径。
因此,我整理了一些放入main
方法中的逻辑。但是,为了更好地进行封装和测试,我希望将此逻辑移至单独的函数。
现在我已经完成了此操作,关于返回的新字符串,我遇到了cannot return value referencing temporary value
和cannot return value referencing local variable
之类的错误。
我不确定我要去哪里,为什么不知道,任何帮助将不胜感激。
fn get_command_filepath(command_arg: &str) -> Result<&str, Error> {
// If the file is not available, it should be found
// in the same directory as the executable.
// This needs to be calculated at runtime.
let command_default_path = std::env::current_exe().unwrap()
.parent()
.unwrap()
.join("file.txt");
let command_default: &str = command_default_path
.to_str()
.unwrap();
Ok(if command_arg.is_empty() {
&String::from(command_default)
} else {
command_arg
})
}
答案 0 :(得分:0)
我需要切换功能以使用String
类型。
fn get_command_filepath(command_arg: String) -> Result<String, Error> {
// If the file is not available, it should be found
// in the same directory as the executable.
// This needs to be calculated at runtime.
let command_default_path = std::env::current_exe().unwrap()
.parent()
.unwrap()
.join("file.txt");
let command_default: &str = command_default_path
.to_str()
.unwrap()
.to_owned();
Ok(if command_arg.is_empty() {
command_default.to_owned()
} else {
command_arg
})
}
let command_file = get_command_filepath(opt.config).unwrap();