Expand description
Extended API patterns for future extensibility.
This module provides advanced API design patterns that enable future extensions while maintaining backward compatibility. These patterns allow for optional features, alternative implementations, and configurable algorithms.
§Extension Traits
Extension traits provide optional functionality that can be implemented by different backends or added in future versions:
use clock_curve_math::{api_extensions::FieldExtensions, FieldElement, FieldOps};
// Use extended functionality if available
let element = FieldElement::from_u64(42);
if let Some(sqrt) = element.try_sqrt() {
// Square root is available
assert_eq!(sqrt.square(), element);
}§Operation Builders
Builders allow complex operations to be configured and executed:
use clock_curve_math::{api_extensions::{ExponentiationBuilder, Algorithm}, FieldElement, BigInt};
let base = FieldElement::from_u64(2);
let exp = BigInt::from_u64(1000);
let result = ExponentiationBuilder::new(&base, &exp)
.algorithm(Algorithm::SlidingWindow(4))
.build()
.compute();§Configurable Operations
Operations can be configured with different algorithms and parameters:
use clock_curve_math::{api_extensions::{MultiplicationConfig, MultiplicationAlgorithm, ConfigurableArithmetic}, FieldElement, FieldOps};
let a = FieldElement::from_u64(42);
let b = FieldElement::from_u64(24);
let config = MultiplicationConfig {
algorithm: MultiplicationAlgorithm::Standard,
..Default::default()
};
// Configurable multiplication with algorithm selection
let product = a.mul_with_config(&b, &config);Structs§
- ApiVersion
- Version information for API compatibility.
- Batch
Config - Batch operation configuration.
- Batch
Inverse Builder - Builder for batch inversion operations.
- Configured
Exponentiation - Configured exponentiation operation.
- Exponentiation
Builder - Builder for exponentiation operations.
- Exponentiation
Config - Configuration for exponentiation operations.
- Multiplication
Config - Configuration for multiplication operations.
Enums§
- Algorithm
- Algorithms available for different operations.
- Allocation
Strategy - Memory allocation strategies for batch operations.
- ApiFeature
- API features that may be version-dependent.
- Hardware
Operation - Hardware operations that may be accelerated.
- Multiplication
Algorithm - Algorithms for multiplication.
Traits§
- Advanced
Computation - Advanced computational traits for future extensibility.
- Configurable
Arithmetic - Trait for configurable arithmetic operations.
- Field
Extensions - Extension trait for optional field operations.
- Future
Operations - Future operation hooks.
- Hardware
Acceleration - Hardware acceleration traits for future optimized implementations.
- Memory
Optimization - Memory layout optimizations for cache-friendly operations.