diff --git a/crates/cross/src/compound/list/mod.rs b/crates/cross/src/compound/list/mod.rs index 28b5e29..4ee007f 100644 --- a/crates/cross/src/compound/list/mod.rs +++ b/crates/cross/src/compound/list/mod.rs @@ -21,6 +21,36 @@ pub trait Indexable { fn set(&mut self, v: Self::Element); } +pub trait IndexableExplicit { + fn get(&self) -> >::Element + where + Self: Indexable

, + Self::Element: Copy, + { + Indexable::get(self) + } + fn get_ref(&self) -> &>::Element + where + Self: Indexable

, + { + Indexable::get_ref(self) + } + fn get_mut(&mut self) -> &mut >::Element + where + Self: Indexable

, + { + Indexable::get_mut(self) + } + fn set(&mut self, v: Self::Element) + where + Self: Indexable

, + { + Indexable::set(self, v) + } +} + +impl IndexableExplicit for L {} + /// convenience to lookup the type of the element at index `P` of list `L`. pub type ElementAt = >::Element; diff --git a/crates/cross/src/compound/peano.rs b/crates/cross/src/compound/peano.rs index 22d7b19..4c6e5ba 100644 --- a/crates/cross/src/compound/peano.rs +++ b/crates/cross/src/compound/peano.rs @@ -30,6 +30,14 @@ mod exports { pub type P5 = PNext; pub type P6 = PNext; pub type P7 = PNext; + pub type P8 = PNext; + pub type P9 = PNext; + pub type P10 = PNext; + pub type P11 = PNext; + pub type P12 = PNext; + pub type P13 = PNext; + pub type P14 = PNext; + pub type P15 = PNext; } pub use exports::*;