diff --git a/framework/aster-frame/src/arch/x86/cpu.rs b/framework/aster-frame/src/arch/x86/cpu.rs index 28989c47c..5d1772476 100644 --- a/framework/aster-frame/src/arch/x86/cpu.rs +++ b/framework/aster-frame/src/arch/x86/cpu.rs @@ -236,6 +236,7 @@ impl UserPreemption { const PREEMPTION_INTERVAL: u32 = 100; /// Creates a new instance of `UserPreemption`. + #[allow(clippy::new_without_default)] pub const fn new() -> Self { UserPreemption { count: 0 } } diff --git a/framework/aster-frame/src/sync/wait.rs b/framework/aster-frame/src/sync/wait.rs index 0913d1084..6f7a660f7 100644 --- a/framework/aster-frame/src/sync/wait.rs +++ b/framework/aster-frame/src/sync/wait.rs @@ -146,6 +146,12 @@ impl WaitQueue { } } +impl Default for WaitQueue { + fn default() -> Self { + Self::new() + } +} + /// A waiter that can put the current thread to sleep until it is woken up by the associated /// [`Waker`]. /// diff --git a/kernel/aster-nix/src/device/tty/driver.rs b/kernel/aster-nix/src/device/tty/driver.rs index 8545037c4..ec2675599 100644 --- a/kernel/aster-nix/src/device/tty/driver.rs +++ b/kernel/aster-nix/src/device/tty/driver.rs @@ -73,6 +73,12 @@ impl TtyDriver { } } +impl Default for TtyDriver { + fn default() -> Self { + Self::new() + } +} + fn console_input_callback(mut reader: VmReader) { let tty_driver = get_tty_driver(); while reader.remain() > 0 { diff --git a/kernel/aster-nix/src/events/subject.rs b/kernel/aster-nix/src/events/subject.rs index 96c762e4e..64448d31b 100644 --- a/kernel/aster-nix/src/events/subject.rs +++ b/kernel/aster-nix/src/events/subject.rs @@ -85,3 +85,9 @@ impl> Subject { }); } } + +impl Default for Subject { + fn default() -> Self { + Self::new() + } +} diff --git a/kernel/aster-nix/src/fs/file_table.rs b/kernel/aster-nix/src/fs/file_table.rs index e11c0ef4d..09000332a 100644 --- a/kernel/aster-nix/src/fs/file_table.rs +++ b/kernel/aster-nix/src/fs/file_table.rs @@ -198,6 +198,12 @@ impl FileTable { } } +impl Default for FileTable { + fn default() -> Self { + Self::new() + } +} + impl Clone for FileTable { fn clone(&self) -> Self { Self { diff --git a/kernel/aster-nix/src/process/process_vm/heap.rs b/kernel/aster-nix/src/process/process_vm/heap.rs index bf5049b36..5a43e2381 100644 --- a/kernel/aster-nix/src/process/process_vm/heap.rs +++ b/kernel/aster-nix/src/process/process_vm/heap.rs @@ -97,3 +97,9 @@ impl Clone for Heap { } } } + +impl Default for Heap { + fn default() -> Self { + Self::new() + } +} diff --git a/kernel/libs/aster-util/src/slot_vec.rs b/kernel/libs/aster-util/src/slot_vec.rs index 5b38e6bbb..51bdf7085 100644 --- a/kernel/libs/aster-util/src/slot_vec.rs +++ b/kernel/libs/aster-util/src/slot_vec.rs @@ -5,6 +5,7 @@ use alloc::vec::Vec; /// SlotVec is the variant of Vector. /// It guarantees that the index of one item remains unchanged during adding /// or deleting other items of the vector. +#[derive(Debug, Clone)] pub struct SlotVec { // The slots to store items. slots: Vec>, @@ -118,11 +119,8 @@ impl SlotVec { } } -impl Clone for SlotVec { - fn clone(&self) -> Self { - Self { - slots: self.slots.clone(), - num_occupied: self.num_occupied, - } +impl Default for SlotVec<()> { + fn default() -> Self { + Self::new() } }