starnix_core/task/
kernel_or_task.rs1use crate::task::{CurrentTask, Kernel, Task};
6
7pub trait KernelOrTask<'a>: std::fmt::Debug + Clone + Copy {
11 fn kernel(&self) -> &'a Kernel;
12 fn maybe_task(&self) -> Option<&'a CurrentTask>;
13}
14
15impl<'a> KernelOrTask<'a> for &'a Kernel {
16 fn kernel(&self) -> &'a Kernel {
17 self
18 }
19 fn maybe_task(&self) -> Option<&'a CurrentTask> {
20 None
21 }
22}
23
24impl<'a> KernelOrTask<'a> for &'a CurrentTask {
25 fn kernel(&self) -> &'a Kernel {
26 (self as &Task).kernel()
27 }
28 fn maybe_task(&self) -> Option<&'a CurrentTask> {
29 Some(self)
30 }
31}