Trait SqrtDecomposition

Source
pub trait SqrtDecomposition: Sized {
    type M: Monoid;
    type B;

    // Required methods
    fn bucket(bsize: usize) -> Self::B;
    fn update_bucket(bucket: &mut Self::B, x: &<Self::M as Magma>::T);
    fn update_cell(
        bucket: &mut Self::B,
        cell: &mut <Self::M as Magma>::T,
        x: &<Self::M as Magma>::T,
    );
    fn fold_bucket(bucket: &Self::B) -> <Self::M as Magma>::T;
    fn fold_cell(
        bucket: &Self::B,
        cell: &<Self::M as Magma>::T,
    ) -> <Self::M as Magma>::T;

    // Provided method
    fn sqrt_decomposition(
        n: usize,
        bucket_size: usize,
    ) -> SqrtDecompositionBuckets<Self> { ... }
}

Required Associated Types§

Required Methods§

Source

fn bucket(bsize: usize) -> Self::B

Source

fn update_bucket(bucket: &mut Self::B, x: &<Self::M as Magma>::T)

Source

fn update_cell( bucket: &mut Self::B, cell: &mut <Self::M as Magma>::T, x: &<Self::M as Magma>::T, )

Source

fn fold_bucket(bucket: &Self::B) -> <Self::M as Magma>::T

Source

fn fold_cell( bucket: &Self::B, cell: &<Self::M as Magma>::T, ) -> <Self::M as Magma>::T

Provided Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§