diff --git a/src/link.rs b/src/link.rs
index a4e1ec87f31adff9ae363aac310c72fdcd00efdb..fe6aad652de5599d66a430feba7924e5ad30dfd5 100644
--- a/src/link.rs
+++ b/src/link.rs
@@ -25,10 +25,10 @@ use crate::symbols::SymbolsIter;
 
 const PADDING_SIZE: usize = 32;
 const PADDING_BUFFER: [u8; PADDING_SIZE] = [0xff; PADDING_SIZE];
-const PIP_EXPORT_SECTIONS: &'static [&str] = &[".vector_table", ".text", ".ARM.exidx", ".data"];
-const CRT0_EXPORT_SECTIONS: &'static [&str] = &[".text", ".rodata", ".ARM.exidx"];
-const USER_CODE_EXPORT_SECTIONS: &'static [&str] = &[".rom", ".ARM.exidx", ".got", ".rom.ram"];
-const USER_CODE_INFO_SYMBOLS: &'static [&str] = &[
+const PIP_EXPORT_SECTIONS: &[&str] = &[".vector_table", ".text", ".ARM.exidx", ".data"];
+const CRT0_EXPORT_SECTIONS: &[&str] = &[".text", ".rodata", ".ARM.exidx"];
+const USER_CODE_EXPORT_SECTIONS: &[&str] = &[".rom", ".ARM.exidx", ".got", ".rom.ram"];
+const USER_CODE_INFO_SYMBOLS: &[&str] = &[
     "start",
     "__romSize",
     "__romRamSize",
@@ -85,7 +85,7 @@ fn dump_sections<'s, T: Write>(
 /// returns the number of bytes needed to align value
 /// on a given align size (must be a power of 2)
 fn align(value: usize, align: usize) -> usize {
-    (value + (align - 1) & !(align - 1)) - value
+    ((value + (align - 1)) & !(align - 1)) - value
 }
 
 /// Exports the user code information to the output file
@@ -105,7 +105,7 @@ fn export_user_info<'data, T: Write, E: EndianParse>(
     symbols_name: &[&'static str],
     output_file: &mut T,
 ) -> Result<()> {
-    let mut symbols = SymbolsIter::new(elf, symbols_name.iter().map(|s| *s))?;
+    let mut symbols = SymbolsIter::new(elf, symbols_name.iter().copied())?;
 
     symbols.try_for_each(|symbol| -> Result<()> {
         let symbol = symbol?;
@@ -124,7 +124,7 @@ fn get_relocations_from_section<'data, E: EndianParse>(
     elf: &'data ElfBytes<'data, E>,
     section_name: &str,
 ) -> Result<Option<Vec<u32>>> {
-    match RelIter::new(&elf, &section_name) {
+    match RelIter::new(elf, section_name) {
         Ok(reliter) => Ok(Some(
             reliter
                 .filter(|rel| rel.r_type == elf::abi::R_ARM_ABS32)
@@ -165,7 +165,7 @@ pub fn link(opts: Opts) -> Result<()> {
     // Then open Pip elf file if necessary
     let pip_elf_data = match opts.pip_elf {
         None => None,
-        Some(pip_path) => Some(std::fs::read(&pip_path)?),
+        Some(pip_path) => Some(std::fs::read(pip_path)?),
     };
 
     let pip_elf = match pip_elf_data {
@@ -213,7 +213,7 @@ pub fn link(opts: Opts) -> Result<()> {
 
     // Dump .rom section in a vec
     let mut rom_bytes: Vec<u8> = vec![];
-    dump_sections(&user_code_elf, &USER_CODE_EXPORT_SECTIONS, &mut rom_bytes)?;
+    dump_sections(&user_code_elf, USER_CODE_EXPORT_SECTIONS, &mut rom_bytes)?;
 
     if let Some(ref mut f) = gdb_offsets {
         writeln!(