Skip to main content

CompatibleConfig

Trait CompatibleConfig 

Source
pub trait CompatibleConfig<T>: CurveConfig
where T: CurveConfig<BaseField = Self::BaseField, ScalarField = Self::ScalarField>,
{ }
Expand description

Marker: Self and T are curve configs for the same curve with identical field types.

BaseField and ScalarField equality is enforced by the type system. Because point types (e.g. sw::Affine<C>) are generic structs whose fields depend only on these associated types, two instantiations with identical field types have identical layouts.

Strictly speaking, #[repr(Rust)] does not formally guarantee layout equivalence across monomorphizations, but in practice rustc lays out structs deterministically based on their field types. The compile-time size and alignment assertions in the transmute helpers provide an additional safety net.

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§