#[cfg(all(feature = "mount", windows))]
mod dokan;
#[cfg(all(feature = "mount", unix, not(target_os = "macos")))]
mod fuse;
#[cfg(all(feature = "mount", target_os = "macos"))]
mod fuse_t;
#[cfg(all(feature = "mount", windows))]
pub use ::dokan::MountFlags;
#[cfg(all(feature = "mount", unix, not(target_os = "macos")))]
pub use fuse::FuseMount;
#[cfg(all(feature = "mount", target_os = "macos"))]
pub use fuse_t::{FuseTBackend, FuseTMount};
#[cfg(all(feature = "mount", unix, not(target_os = "macos")))]
pub use fuser::MountOption;
#[cfg(all(feature = "mount", windows))]
pub use self::dokan::DokanMount;
#[cfg(all(feature = "mount", any(unix, windows)))]
pub(crate) fn block_on<F: std::future::Future>(fut: F) -> F::Output {
use std::sync::OnceLock;
static RT: OnceLock<tokio::runtime::Runtime> = OnceLock::new();
RT.get_or_init(|| {
tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()
.expect("build virtx binding runtime")
})
.block_on(fut)
}