wip3 (34e): ohmy

This commit is contained in:
🪞👃🪞 2024-12-09 16:46:28 +01:00
parent 36280ce9b7
commit b028dc41a3
4 changed files with 92 additions and 87 deletions

View file

@ -46,7 +46,7 @@ pub struct ToNorth<E: Engine, A: Render<E>, B: Render<E>>(Option<E::Unit>, A, B)
pub struct ToSouth<E: Engine, A: Render<E>, B: Render<E>>(Option<E::Unit>, A, B);
pub struct ToEast<E: Engine, A: Render<E>, B: Render<E>>(Option<E::Unit>, A, B);
pub struct ToEast<E: Engine, A, B>(Option<E::Unit>, A, B);
pub struct ToWest<E: Engine, A: Render<E>, B: Render<E>>(Option<E::Unit>, A, B);
@ -68,6 +68,15 @@ impl<E: Engine, A: Render<E>, B: Render<E>> Render<E> for ToSouth<E, A, B> {
}
}
impl<E: Engine, A: Render<E>, B: Render<E>> Render<E> for ToWest<E, A, B> {
fn min_size (&self, _: E::Size) -> Perhaps<E::Size> {
todo!();
}
fn render (&self, _: &mut E::Output) -> Usually<()> {
Ok(())
}
}
impl<E: Engine, A: Render<E>, B: Render<E>> Render<E> for ToEast<E, A, B> {
fn min_size (&self, _: E::Size) -> Perhaps<E::Size> {
todo!();

View file

@ -2,15 +2,15 @@ use crate::*;
impl<E: Engine, W: Render<E>> LayoutFixed<E> for W {}
pub trait LayoutFixed<E: Engine>: Render<E> + Sized {
fn fixed_x (self, x: E::Unit) -> Fixed<E, Self> {
Fixed::X(x, self)
pub trait LayoutFixed<E: Engine> {
fn fixed_x <W: Render<E>> (x: E::Unit, w: W) -> Fixed<E, W> {
Fixed::X(x, w)
}
fn fixed_y (self, y: E::Unit) -> Fixed<E, Self> {
Fixed::Y(y, self)
fn fixed_y <W: Render<E>> (y: E::Unit, w: W) -> Fixed<E, W> {
Fixed::Y(y, w)
}
fn fixed_xy (self, x: E::Unit, y: E::Unit) -> Fixed<E, Self> {
Fixed::XY(x, y, self)
fn fixed_xy <W: Render<E>> (x: E::Unit, y: E::Unit, w: W) -> Fixed<E, W> {
Fixed::XY(x, y, w)
}
}

View file

@ -1,20 +1,16 @@
use crate::*;
impl<E: Engine> LayoutMapReduce<E> for E {}
impl<E: Engine, I: Iterator<Item=T>, T, R: Render<E>> LayoutMapReduce<E, I, T, R> for E {}
pub trait LayoutMapReduce<E: Engine> {
fn map <T, I, R, F> (iterator: I, callback: F) -> Map<E, T, I, R, F>
pub trait LayoutMapReduce<E: Engine, I: Iterator<Item = T>, T, R: Render<E>> {
fn map <F> (iterator: I, callback: F) -> Map<E, T, I, R, F>
where
I: Iterator<Item=T>,
R: Render<E>,
F: Fn(T)->R
{
Map(Default::default(), iterator, callback)
}
fn reduce <T, I, R, F> (iterator: I, callback: F) -> Reduce<E, T, I, R, F>
fn reduce <F> (iterator: I, callback: F) -> Reduce<E, T, I, R, F>
where
I: Iterator<Item=T>,
R: Render<E>,
F: Fn(R, T)->R
{
Reduce(Default::default(), iterator, callback)