diff --git a/src/heap.rs b/src/heap.rs index 1c156d6..dfe3532 100644 --- a/src/heap.rs +++ b/src/heap.rs @@ -21,7 +21,7 @@ impl Object { } fn get_field(&self, cp_index: &u16) -> &str { - if let CpEntry::Utf8(name) = self.class.constant_pool.get(&cp_index).unwrap() { + if let CpEntry::Utf8(name) = self.class.constant_pool.get(cp_index).unwrap() { return name; } panic!() diff --git a/src/io.rs b/src/io.rs index 781f715..43ec56f 100644 --- a/src/io.rs +++ b/src/io.rs @@ -17,7 +17,7 @@ pub fn find_class(classpath: &Vec, class_name: &str) -> Result, class_name: &str) -> Result Result, Error> { let mut buffer; - if name.contains("#") { - let parts: Vec<&str> = name.split("#").collect(); + if name.contains('#') { + let parts: Vec<&str> = name.split('#').collect(); let archive_file = File::open(parts[0])?; let mut archive_zip = zip::ZipArchive::new(archive_file)?; let mut entry = archive_zip.by_name(parts[1])?; buffer = vec![0; entry.size() as usize]; - entry.read(&mut buffer)?; + entry.read_exact(&mut buffer)?; } else { let mut f = File::open(&name)?; let metadata = fs::metadata(&name)?; buffer = vec![0; metadata.len() as usize]; - let _ = f.read(&mut buffer)?; + f.read_exact(&mut buffer)?; } Ok(buffer) } diff --git a/src/vm.rs b/src/vm.rs index a3ebf2b..9e0037f 100644 --- a/src/vm.rs +++ b/src/vm.rs @@ -276,8 +276,8 @@ impl Vm { fn get_signature_for_invoke(cp: Rc>, index: u16) -> Option<(String, String)> { if let CpEntry::MethodRef(class_index, name_and_type_index) = cp.get(&index).unwrap() { if let Some(method_signature) = get_name_and_type(Rc::clone(&cp), *name_and_type_index) { - if let CpEntry::ClassRef(class_name_index) = cp.get(&class_index).unwrap() { - if let CpEntry::Utf8(class_name) = cp.get(&class_name_index).unwrap() { + if let CpEntry::ClassRef(class_name_index) = cp.get(class_index).unwrap() { + if let CpEntry::Utf8(class_name) = cp.get(class_name_index).unwrap() { return Some((class_name.into(), method_signature)); } } @@ -286,10 +286,10 @@ fn get_signature_for_invoke(cp: Rc>, index: u16) -> Option None } -fn get_name_and_type(cp: Rc>, index: u16) -> Option<(String)> { +fn get_name_and_type(cp: Rc>, index: u16) -> Option { if let CpEntry::NameAndType(method_name_index, signature_index) = cp.get(&index).unwrap() { - if let CpEntry::Utf8(method_name) = cp.get(&method_name_index).unwrap() { - if let CpEntry::Utf8(signature) = cp.get(&signature_index).unwrap() { + if let CpEntry::Utf8(method_name) = cp.get(method_name_index).unwrap() { + if let CpEntry::Utf8(signature) = cp.get(signature_index).unwrap() { let mut method_signature: String = method_name.into(); method_signature.push_str(signature); return Some(method_signature);