Documentation
#![no_std]
#![feature(str_from_utf16_endian)]
#![feature(allocator_api)]
#![feature(const_trait_impl)]
#![feature(slice_ptr_get)]
#![warn(internal_features)]
#![feature(link_llvm_intrinsics)]
#![warn(unsafe_op_in_unsafe_fn)]
#![warn(internal_features)]
#![feature(once_cell_get_mut)]
#![feature(once_cell_try)]
#![feature(type_alias_impl_trait)]
#![feature(stmt_expr_attributes)]





pub mod cputure;
pub mod vmcs;
pub mod pagetable;
pub mod error;
pub mod contorls;

pub mod vmxerror;
pub mod vmexit;
pub mod vmstack;
pub mod share_data;
pub mod ept;
pub mod invvpid;
pub mod  invept;
pub mod vmxon;
pub mod x86;
pub mod x86_64;
pub mod vt_x;

#[cfg(not(test))]
use core::panic::PanicInfo;

// #[cfg(all(
//     debug_assertions,
//     // Disable inclusion of panic handlers when compiling tests for wdk crate
//     not(test)
// ))]
// #[panic_handler]
// const fn panic(_info: &PanicInfo) -> ! {
//     loop {}
// }

// #[cfg(all(
//     not(debug_assertions),
//     // Disable inclusion of panic handlers when compiling tests for wdk crate
//     not(test)
// ))]
// #[panic_handler]
// const fn panic(_info: &PanicInfo) -> ! {
//     loop {}
//     // FIXME: Should this trigger Bugcheck via KeBugCheckEx?
// }

extern crate alloc;



use log::*;