use std::fs; use std::env; use std::fmt; struct Program { data: Vec, pc: u32 } impl Program { fn from_string(program: String) -> Program { let mut op_list: Vec = Vec::new(); for opcode in program.split(" ").collect::>() { let mut new_op = opcode.to_owned(); new_op = new_op.replace("\n", ""); if new_op.len() != 0 { op_list.push(new_op.to_owned()); } } return Program{ data: op_list, pc: 0 }; } fn run(&self) { println!("{}", self); } } impl fmt::Display for Program { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Program ({:?})", self.data) } } fn main() { let args: Vec = env::args().collect(); if args.len() == 1 { panic!("You must provide an argument!"); } let filename = &args[1]; let contents = fs::read_to_string(filename).expect("Something went wrong reading the file"); let prog = Program::from_string(contents); prog.run(); }