diff --git a/kernel-rs/Cargo.lock b/kernel-rs/Cargo.lock index d8332878..52a88f58 100644 --- a/kernel-rs/Cargo.lock +++ b/kernel-rs/Cargo.lock @@ -74,17 +74,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" -[[package]] -name = "derive_deref" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcdbcee2d9941369faba772587a565f4f534e42cb8d17e5295871de730163b2b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "either" version = "1.7.0" @@ -196,7 +185,6 @@ dependencies = [ "const-zero", "cortex-a", "cstr_core", - "derive_deref", "itertools", "num-iter", "pin-project", diff --git a/kernel-rs/Cargo.toml b/kernel-rs/Cargo.toml index c564d5a1..6fe3bbc2 100644 --- a/kernel-rs/Cargo.toml +++ b/kernel-rs/Cargo.toml @@ -13,7 +13,7 @@ default = [] test = [] gicv2 = [] gicv3 = [] -lfs = ["dep:derive_deref"] +lfs = [] [profile.dev] panic = "abort" @@ -31,7 +31,6 @@ bitmaps = { version = "3.2.0", default-features = false } cfg-if = "1.0.0" const-zero = { git = "https://github.com/maxbla/const-zero.git" } cstr_core = { version = "0.2.6", default-features = false } -derive_deref = { version = "1.1.1", optional = true } itertools = { version = "0.10.3", default-features = false } num-iter = { version = "0.1.43", default-features = false } pin-project = "1.0.11" diff --git a/kernel-rs/src/fs/lfs/lfs.rs b/kernel-rs/src/fs/lfs/lfs.rs index d1cab8e1..c31dd3fa 100644 --- a/kernel-rs/src/fs/lfs/lfs.rs +++ b/kernel-rs/src/fs/lfs/lfs.rs @@ -2,8 +2,8 @@ #![allow(clippy::module_inception)] use core::mem; +use core::ops::Deref; -use derive_deref::Deref; use pin_project::pin_project; use spin::Once; use static_assertions::const_assert; @@ -55,7 +55,6 @@ impl<'s> From<&'s BufData> for &'s Checkpoint { /// A read-only guard of a `SegManager`. /// Must be `free`d when done using it. -#[derive(Deref)] pub struct SegManagerReadOnlyGuard<'s>(SleepLockGuard<'s, SegManager>); impl SegManagerReadOnlyGuard<'_> { @@ -64,9 +63,16 @@ impl SegManagerReadOnlyGuard<'_> { } } +impl Deref for SegManagerReadOnlyGuard<'_> { + type Target = SegManager; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + /// A read-only guard of a `SegManager`. /// Must be `free`d when done using it. -#[derive(Deref)] pub struct ImapReadOnlyGuard<'s>(SleepLockGuard<'s, Imap>); impl ImapReadOnlyGuard<'_> { @@ -75,6 +81,14 @@ impl ImapReadOnlyGuard<'_> { } } +impl Deref for ImapReadOnlyGuard<'_> { + type Target = Imap; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + impl Tx<'_, Lfs> { /// Acquires the lock on the `SegManager` and returns the lock guard. /// Use this to write blocks to the segment.