pub trait Butterfly<F: Field>:
Copy
+ Send
+ Sync {
// Required method
fn apply<PF: PackedField<Scalar = F>>(&self, x_1: PF, x_2: PF) -> (PF, PF);
// Provided methods
fn apply_in_place<PF: PackedField<Scalar = F>>(
&self,
x_1: &mut PF,
x_2: &mut PF,
) { ... }
fn apply_to_rows(&self, row_1: &mut [F], row_2: &mut [F]) { ... }
fn apply_to_rows_oop(
&self,
src_1: &[F],
dst_1: &mut [MaybeUninit<F>],
src_2: &[F],
dst_2: &mut [MaybeUninit<F>],
) { ... }
}
Required Methods§
fn apply<PF: PackedField<Scalar = F>>(&self, x_1: PF, x_2: PF) -> (PF, PF)
Provided Methods§
fn apply_in_place<PF: PackedField<Scalar = F>>( &self, x_1: &mut PF, x_2: &mut PF, )
fn apply_to_rows(&self, row_1: &mut [F], row_2: &mut [F])
Sourcefn apply_to_rows_oop(
&self,
src_1: &[F],
dst_1: &mut [MaybeUninit<F>],
src_2: &[F],
dst_2: &mut [MaybeUninit<F>],
)
fn apply_to_rows_oop( &self, src_1: &[F], dst_1: &mut [MaybeUninit<F>], src_2: &[F], dst_2: &mut [MaybeUninit<F>], )
Like apply_to_rows
, but out-of-place.
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.