Compare commits

..
Author SHA1 Message Date
Ian Rettig f9418783d4 Feat: Add custom error message. 2025-06-06 17:50:44 -04:00
Ian Rettig d7d2c74b23 Feat: question mark unwrap. 2025-06-06 17:02:32 -04:00
Ian Rettig d41577ef7d Feat: return error in unwrap. 2025-06-06 17:00:21 -04:00
Ian Rettig 3ff1454fb6 Feat: Use unwrapping for error handling. 2025-06-06 16:55:57 -04:00
Ian Rettig a663f2b4d8 Feat: set up manual error handling. 2025-06-06 14:46:21 -04:00
+9 -8
View File
@@ -1,6 +1,4 @@
use clap::Parser; use clap::Parser;
use std::fs::File;
use std::io::{BufRead, BufReader};
// Search for a pattern in a file and display the lines that contain it. // Search for a pattern in a file and display the lines that contain it.
#[derive(Parser)] #[derive(Parser)]
@@ -9,18 +7,21 @@ struct Cli {
path: std::path::PathBuf, path: std::path::PathBuf,
} }
fn main() -> std::io::Result<()> { #[derive(Debug)]
struct CustomError(String);
fn main() -> Result<(), CustomError> {
let args = Cli::parse(); let args = Cli::parse();
let f = File::open(&args.path)?; // let content = std::fs::read_to_string(&args.path).expect("Could not read file.");
let mut reader = BufReader::new(f);
let mut line = String::new();
while reader.read_line(&mut line)? > 0 { let content = std::fs::read_to_string(&args.path)
.map_err(|err| CustomError(format!("Error reading `{}`: {}", args.path.display(), err)))?;
for line in content.lines() {
if line.contains(&args.pattern) { if line.contains(&args.pattern) {
println!("{}", line) println!("{}", line)
} }
line.clear();
} }
Ok(()) Ok(())