diff --git a/src/env.rs b/src/env.rs
index 57cc52d5b7f8a142ebb3907df16c5737620715c2..3ddc7b56e1850f5443e79310b27ee0e123893715 100644
--- a/src/env.rs
+++ b/src/env.rs
@@ -9,7 +9,7 @@ pub fn args() -> Arguments {
 
 //
 
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
 pub struct Arguments {
     pub log_level: LogLevel,
     // log_color: bool,
@@ -24,8 +24,10 @@ impl Arguments {
     pub fn parse(s: &'static str) {
         ARGUMENTS.call_once(|| {
             let mut iter = s.split(|c: char| c.is_whitespace() || c == '=');
-            let mut result = Arguments::default();
-            result.cmdline = s;
+            let mut result = Arguments {
+                cmdline: s,
+                ..<_>::default()
+            };
 
             while let Some(item) = iter.next() {
                 match item {
@@ -58,14 +60,4 @@ impl Arguments {
     }
 }
 
-impl Default for Arguments {
-    fn default() -> Self {
-        Self {
-            log_level: LogLevel::default(),
-            had_unrecognized: false,
-            cmdline: "",
-        }
-    }
-}
-
 static ARGUMENTS: Once<Arguments> = Once::new();
diff --git a/src/main.rs b/src/main.rs
index c38b63d0882ce95c2fdc065fd855dc2705383654..3d8220d647eedf6bc8d144c4c7c023103c911d3d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -14,12 +14,6 @@
 
 //
 
-use x86_64::{
-    registers::control::Cr3,
-    structures::paging::{PageTable, PhysFrame},
-    VirtAddr,
-};
-
 extern crate alloc;
 
 //
diff --git a/src/mem/mod.rs b/src/mem/mod.rs
index 8a01c6e666c39693df4add3e64f15ab8078ddc69..55c7a3f3dc3a42710ecda7af5226cd3fc534c9fc 100644
--- a/src/mem/mod.rs
+++ b/src/mem/mod.rs
@@ -1,4 +1,4 @@
-use crate::{boot, debug, mem::map::Memmap, util::fmt::NumberPostfix};
+use crate::{boot, debug};
 use x86_64::{
     registers::control::Cr3,
     structures::paging::{page_table::FrameError, PageTable, PhysFrame, Size2MiB, Size4KiB},
@@ -22,10 +22,12 @@ pub fn init() {
 
 //
 
+#[allow(unused)]
 fn is_higher_half(addr: u64) -> bool {
     addr >= boot::hhdm_offset()
 }
 
+#[allow(unused)]
 fn to_higher_half(addr: PhysAddr) -> VirtAddr {
     let addr = addr.as_u64();
     if is_higher_half(addr) {
@@ -35,6 +37,7 @@ fn to_higher_half(addr: PhysAddr) -> VirtAddr {
     }
 }
 
+#[allow(unused)]
 fn from_higher_half(addr: VirtAddr) -> PhysAddr {
     let addr = addr.as_u64();
     if is_higher_half(addr) {
@@ -87,6 +90,7 @@ fn walk_page_tables(addr: VirtAddr) -> Option<PhysAddr> {
     Some(frame.start_address() + u64::from(addr.page_offset()))
 }
 
+#[allow(unused)]
 fn debug_phys_addr(addr: PhysAddr) {
     debug!(
         "{:?} {:?} {:?}",
diff --git a/src/mem/pmm.rs b/src/mem/pmm.rs
index 413dc6c6ec741aacd37d09397acd89a7ab8c5260..cec1e49e095fa9e4d12f3a66f55d352cfcbc09ea 100755
--- a/src/mem/pmm.rs
+++ b/src/mem/pmm.rs
@@ -1,19 +1,16 @@
 use super::{map::Memmap, to_higher_half};
 use crate::{
     boot, debug,
-    log::{test_log_level, LogLevel},
-    mem::{bump, map::Memtype},
+    mem::bump,
     trace,
     util::{bitmap::Bitmap, fmt::NumberPostfix},
 };
 use core::{
-    any::type_name,
-    convert::identity,
     fmt, slice,
     sync::atomic::{AtomicU64, AtomicUsize, Ordering},
 };
 use spin::{Mutex, Once};
-use x86_64::{align_down, align_up, PhysAddr, VirtAddr};
+use x86_64::{align_up, PhysAddr};
 
 //
 
@@ -38,7 +35,7 @@ pub fn init() {
     // the end of the usable physical memory address space
     let top = boot::memmap()
         .filter(Memmap::is_usable)
-        .map(|Memmap { base, len, ty }| base + len)
+        .map(|Memmap { base, len, ty: _ }| base + len)
         .max()
         .expect("No memory");
 
@@ -61,7 +58,7 @@ pub fn init() {
     for Memmap {
         mut base,
         mut len,
-        ty,
+        ty: _,
     } in boot::memmap().filter(Memmap::is_usable)
     {
         if let Some(map) = bump::map() && map.base == base {
diff --git a/src/term/escape/encode.rs b/src/term/escape/encode.rs
index a216d3a2f7397510abdc7422c313c7570acd1133..16ab30eeb2c9538392c62c5b233aa859a2043f61 100644
--- a/src/term/escape/encode.rs
+++ b/src/term/escape/encode.rs
@@ -6,7 +6,7 @@ pub trait EscapeEncoder
 where
     Self: Sized,
 {
-    fn with_escape_code<'a>(self, code: &'a str) -> EncodedPart<'a, Self> {
+    fn with_escape_code(self, code: &str) -> EncodedPart<Self> {
         EncodedPart {
             code,
             data: self,
diff --git a/src/util/fmt.rs b/src/util/fmt.rs
index e43b03aebf51bf8785494b31087b5f039b73760f..1047a89ea57df3d1ad66a7b5a849b5d13814918a 100644
--- a/src/util/fmt.rs
+++ b/src/util/fmt.rs
@@ -7,7 +7,7 @@ pub trait NumberPostfix: Sized + Copy + DivAssign + PartialOrd {
     const NUM_1024: Self;
 
     fn postfix(mut self) -> NumberPostfixed<Self> {
-        const TABLE: [&'static str; 10] = ["", "K", "M", "G", "T", "P", "E", "Z", "Y", "R"];
+        const TABLE: [&str; 10] = ["", "K", "M", "G", "T", "P", "E", "Z", "Y", "R"];
         for scale in TABLE {
             if self < Self::NUM_1000 {
                 return NumberPostfixed { n: self, scale };
@@ -21,8 +21,7 @@ pub trait NumberPostfix: Sized + Copy + DivAssign + PartialOrd {
     }
 
     fn postfix_binary(mut self) -> NumberPostfixed<Self> {
-        const TABLE: [&'static str; 10] =
-            ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi", "Ri"];
+        const TABLE: [&str; 10] = ["", "Ki", "Mi", "Gi", "Ti", "Pi", "Ei", "Zi", "Yi", "Ri"];
         for scale in TABLE {
             if self < Self::NUM_1024 {
                 return NumberPostfixed { n: self, scale };