use std::io::{Read, Seek, Write};
use crate::{base::layer::Layer, errors::Error};
pub trait Allocator<'l> {
type LayerStream: Write + Read + Seek;
fn load_layers(&self) -> Result<Vec<Layer<'l, Self::LayerStream>>, Error>;
fn add_layer(&mut self) -> Result<Layer<'l, Self::LayerStream>, Error>;
fn drop_top_layer(&mut self) -> Result<(), Error>;
fn rebase(&mut self, top_layer: usize) -> Result<(), Error>;
}