我的项目文件夹中有一些文本文件,它们和src文件夹在同一层,我有一个run函数,它可以获取用户输入,并从中生成一个readfile结构。
pub fn run() {
loop {
let file = ReadFile::println_recieve_h("What is the filepath?");
let query = ReadFile::println_recieve_h("What phrase do you want to find?");
let readfile = ReadFile::new(&file, &query);
...
下面是我为减少冗余而创建的helper函数(我相信我已经将问题隔离在这里了):
fn println_recieve_h(print: &str) -> String {
println!("{print}");
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
input
}
下面是调用故障点的函数
pub struct ReadFile{ query: String, file_path: String, contents: String }
impl ReadFile {
//Builds a readfile struct with a path and phrase.
fn new(file_path: &String, phrase: &String) -> ReadFile{
use std::fs;
ReadFile {
query: phrase.clone(),
file_path: file_path.clone(),
contents: fs::read_to_string(file_path).expect("ERROR 003: FILE NOT FOUND"),
}
}
内容:文件系统::读取目标字符串(文件路径)。预期(“错误003:FILE NOT FOUND”)失败,但是硬编码字符串切片成功(我尝试过将字符串引用转换为切片)。内容:文件系统::读取目标字符串(“longtxt1.txt”)。预期(“错误003:未找到文件”)。
有没有人看到导致这一切的问题?我是铁 rust 新手。
我尝试过将引用转换为字符串切片,克隆引用等。我确保在控制台中输入时没有拼写错误。我将run函数中的文件硬编码为String::from(“longtxt1.txt”),这使得一切都可以正常工作。我相信这将问题与我使用helper函数隔离开来。
1条答案
按热度按时间9cbw7uwe1#
read_line
在返回的字符串中包含了一个尾随换行符,而这个换行符不在文件名中。您需要修剪返回的字符串。