gpt4 book ai didi

rust - 遵循防 rust 手册时出现错误

转载 作者:行者123 更新时间:2023-12-03 11:34:42 27 4
gpt4 key购买 nike

use std::error::Error;
use std::fs;

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn one_result() {
let query = "duct";
let contents = "\
Rust:
safe, fast, productive.
Pick three.";

assert_eq!(vec!["safe, fast, productive."], search(query, contents));
}
}

pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
vec![]
}

pub struct Config {
pub query: String,
pub filename: String,
}
impl Config {
pub fn new(args: &[String]) -> Result<Config, &'static str> {
if args.len() < 3 {
return Err("not enough arguments");
}
let query = args[1].clone();
let filename = args[2].clone();

Ok(Config { query, filename })
}
}
pub fn run(config: Config) -> Result<(), Box<dyn Error>> {
let contents = fs::read_to_string(config.filename)?;

println!("{}",contents);

Ok(())
}

这是我的lib.rs
use std::{env, process};
use minigrep::Config;

fn main() {
let args: Vec<String> = env::args().collect();

let config = Config::new(&args).unwrap_or_else(|err| {
println!("Problem parsing arguments: {}", err);
process::exit(1);
});

//println!("Searching for {}", config.query);
//println!("In file {}", config.filename);

if let Err(e) = minigrep::run(config) {
println!("Application error: {}", e);

process::exit(1);
}

}

这是我的main.rs
我的问题:我正在研究构建minigrep应用程序的内容。由于剪断,很难知道我是否有正确的代码。我不熟悉 rust ,无法弄清楚为什么在我的lib.rs中出现一个错误,提示“查询”和“内容”是未使用的变量。我正在尝试按照 rust 皮书中的说明进行有意失败的测试。

最佳答案

“'查询'和'内容'是未使用的变量”-这是一个警告,但不是错误。
该警告是由search函数引起的,其中未使用参数querycontents:

pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
vec![]
}

您必须继续读这本书。一旦 search函数的主要部分填充了最终代码,警告就会消失:
pub fn search<'a>(query: &str, contents: &'a str) -> Vec<&'a str> {
let mut results = Vec::new();
for line in contents.lines() {
if line.contains(query) {
results.push(line);
}
}
results
}

关于rust - 遵循防 rust 手册时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66080385/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com