prelude.rs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #[allow(dead_code)]
  2. pub type KResult<T> = Result<T, u32>;
  3. macro_rules! dont_check {
  4. ($arg:expr) => {
  5. match $arg {
  6. Ok(_) => (),
  7. Err(_) => (),
  8. }
  9. };
  10. }
  11. pub(crate) use dont_check;
  12. pub(crate) use crate::kernel::console::{
  13. print, println, println_debug, println_fatal, println_info, println_trace, println_warn,
  14. };
  15. pub(crate) use alloc::{boxed::Box, string::String, vec, vec::Vec};
  16. pub(crate) use core::{any::Any, fmt::Write, marker::PhantomData, str};
  17. pub use crate::sync::Spin;
  18. #[allow(dead_code)]
  19. pub trait AsAny: Send + Sync {
  20. fn as_any(&self) -> &dyn Any;
  21. fn as_any_mut(&mut self) -> &mut dyn Any;
  22. }
  23. macro_rules! impl_any {
  24. ($t:ty) => {
  25. impl AsAny for $t {
  26. fn as_any(&self) -> &dyn Any {
  27. self
  28. }
  29. fn as_any_mut(&mut self) -> &mut dyn Any {
  30. self
  31. }
  32. }
  33. };
  34. }
  35. macro_rules! addr_of_mut_field {
  36. ($pointer:expr, $field:ident) => {
  37. core::ptr::addr_of_mut!((&mut (*$pointer)).$field)
  38. };
  39. }
  40. pub(crate) use {addr_of_mut_field, impl_any};