use crate::{Integer, Rect};
pub trait Center<T = Self> {
fn center(&self) -> T;
}
pub trait DistributeGrid<T = Self> {
fn distribute_grid(&self, rect: Rect, rows: Integer, columns: Integer) -> T;
}
pub trait TotalMemory {
fn total_memory(&self) -> usize {
self.stack_memory() + self.heap_memory()
}
fn stack_memory(&self) -> usize {
std::mem::size_of_val(self)
}
fn heap_memory(&self) -> usize {
0
}
}
impl<T> TotalMemory for Vec<T> {
fn heap_memory(&self) -> usize {
self.capacity() * std::mem::size_of::<T>()
}
}
pub trait VertexCount {
fn vertex_count(&self) -> usize;
}