args: use PathBuf instead of string for file path
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
use std::env;
|
||||
use std::path::PathBuf;
|
||||
use std::process::exit;
|
||||
|
||||
const VERSION: &str = env!("CARGO_PKG_VERSION");
|
||||
@@ -8,7 +9,7 @@ const CRATE: &str = env!("CARGO_CRATE_NAME");
|
||||
#[derive(Default)]
|
||||
pub struct Args {
|
||||
version: bool,
|
||||
file: Option<String>,
|
||||
file: Option<PathBuf>,
|
||||
}
|
||||
|
||||
impl Args {
|
||||
@@ -34,7 +35,7 @@ impl Args {
|
||||
if self.file.is_some() {
|
||||
panic!("please specify only a single source file!");
|
||||
}
|
||||
self.file = Some(file.to_owned());
|
||||
self.file = Some(PathBuf::from(file));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -55,7 +56,7 @@ impl Args {
|
||||
/// Fetches the file from the arguments.
|
||||
/// Panics if there is no file in the arguments
|
||||
#[inline]
|
||||
pub fn get_file(self) -> String {
|
||||
pub fn get_file(self) -> PathBuf {
|
||||
self.file.expect("no file supplied!")
|
||||
}
|
||||
}
|
||||
|
12
src/main.rs
12
src/main.rs
@@ -27,8 +27,14 @@ fn main() {
|
||||
args.handle();
|
||||
|
||||
let file = args.get_file();
|
||||
let content = fs::read_to_string(file).expect("Couldn't read the file");
|
||||
let content = fs::read_to_string(&file).expect("Couldn't read the file");
|
||||
let mut parser = Parser::new(&content);
|
||||
|
||||
println!("{:?}", parser.parse());
|
||||
let Some(parent) = parser.parse() else {
|
||||
eprintln!(
|
||||
"Failed to parse {} - See the errors above",
|
||||
file.to_string_lossy()
|
||||
);
|
||||
std::process::exit(1);
|
||||
};
|
||||
println!("Parsed AST:\n{:#?}", parent);
|
||||
}
|
||||
|
Reference in New Issue
Block a user