#![cfg_attr(not(test), no_std)]
#![cfg_attr(test, allow(unused_imports))]
#![allow(clippy::new_without_default)]
#![feature(
    async_fn_traits,
    new_range_api,
    associated_type_defaults,
    maybe_uninit_slice,
    maybe_uninit_write_slice,
    step_trait,
    const_trait_impl,
    slice_ptr_get,
    never_type,
    let_chains,
    allocator_api,
    trait_alias,
    if_let_guard,
    arbitrary_self_types,
    slice_split_once,
    arbitrary_self_types_pointers,
    negative_impls,
    decl_macro,
    optimize_attribute
)]

extern crate alloc;
extern crate serde;

pub use log;
pub use yggdrasil_abi::error;

#[macro_use]
pub mod task;

pub mod arch;
pub mod config;
pub mod debug;
pub mod device;
pub mod event;
pub mod fs;
pub mod module;
pub mod random;
pub mod time;
pub mod vfs;

pub mod dma;

#[cfg(any(target_os = "none", rust_analyzer))]
pub mod panic;

#[repr(C)]
pub struct AlignedTo<Align, Bytes: ?Sized> {
    pub align: [Align; 0],
    pub bytes: Bytes,
}
