use crate::{
prelude::*,
shape::*,
};
pub trait Bound: Pack + Instance<BoundClass> {}
pub enum BoundClass {}
impl Class for BoundClass {
fn name() -> String {
"bound".to_string()
}
fn methods() -> Vec<String> {
vec!["bound".to_string()]
}
}
pub trait Bounded<B: Bound> {
fn bound(&self) -> Option<B>;
}
impl<T: Bound + Shape + Clone> Bounded<T> for T {
fn bound(&self) -> Option<T> {
Some(self.clone())
}
}