use std::fmt::Debug;
use nonempty::NonEmpty;
use crate::pal::ProcessorFacade;
use crate::{MemoryRegionId, ProcessorId};
pub(crate) trait Platform: Debug + Send + Sync + 'static {
#[must_use]
fn get_all_processors(&self) -> NonEmpty<ProcessorFacade>;
fn pin_current_thread_to<P>(&self, processors: &NonEmpty<P>)
where
P: AsRef<ProcessorFacade>;
#[must_use]
fn current_processor_id(&self) -> ProcessorId;
#[must_use]
fn current_thread_processors(&self) -> NonEmpty<ProcessorId>;
#[must_use]
fn max_processor_id(&self) -> ProcessorId;
#[must_use]
fn max_memory_region_id(&self) -> MemoryRegionId;
#[must_use]
fn max_processor_time(&self) -> f64;
#[must_use]
fn active_processor_count(&self) -> usize;
}