prelude.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 use crate::bindings::root as bindings;
  13. pub(crate) use crate::kernel::console::{
  14. print, println, println_debug, println_fatal, println_info, println_trace, println_warn,
  15. };
  16. pub(crate) use alloc::{boxed::Box, string::String, vec, vec::Vec};
  17. pub(crate) use core::{any::Any, fmt::Write, marker::PhantomData, str};
  18. pub use crate::sync::{Mutex, RwLock, Spin};
  19. #[allow(dead_code)]
  20. pub trait AsAny: Send + Sync {
  21. fn as_any(&self) -> &dyn Any;
  22. fn as_any_mut(&mut self) -> &mut dyn Any;
  23. }
  24. macro_rules! impl_any {
  25. ($t:ty) => {
  26. impl AsAny for $t {
  27. fn as_any(&self) -> &dyn Any {
  28. self
  29. }
  30. fn as_any_mut(&mut self) -> &mut dyn Any {
  31. self
  32. }
  33. }
  34. };
  35. }
  36. macro_rules! addr_of_mut_field {
  37. ($pointer:expr, $field:ident) => {
  38. core::ptr::addr_of_mut!((*$pointer).$field)
  39. };
  40. }
  41. pub(crate) use {addr_of_mut_field, impl_any};