Problem
contracts/insurance/src/premium_engine.rs had multiple compilation errors:
-
Duplicate function name — calculate_adjustment_amount was defined twice with different arities. Rust does not support function overloading.
-
u128 / u32 division — BASIS_POINTS_DENOMINATOR was declared as u32 but used as a divisor for u128 expressions throughout the file. Rust requires matching types for division.
-
Ambiguous integer type — base_deductible_rate and risk_adjustment were untyped integer literals, causing E0689 when calling .saturating_add().
-
Wrong argument count — call sites passed 4 or 6 args to calculate_adjustment_amount which expected 5.
-
Option<ActuarialModel> vs Option<&ActuarialModel> — calculate_dynamic_premium expects a reference but was passed an owned Option.
Fix
- Renamed the two overloaded functions to
calculate_coverage_adjustment_amount, calculate_pool_adjustment_amount, calculate_time_adjustment_amount.
- Changed
BASIS_POINTS_DENOMINATOR from u32 to u128.
- Added explicit
u128 type annotations to ambiguous literals.
- Updated all call sites.
- Added
.as_ref() at the call site in lib.rs.
Affected files
contracts/insurance/src/premium_engine.rs
contracts/insurance/src/lib.rs
Problem
contracts/insurance/src/premium_engine.rshad multiple compilation errors:Duplicate function name —
calculate_adjustment_amountwas defined twice with different arities. Rust does not support function overloading.u128 / u32division —BASIS_POINTS_DENOMINATORwas declared asu32but used as a divisor foru128expressions throughout the file. Rust requires matching types for division.Ambiguous integer type —
base_deductible_rateandrisk_adjustmentwere untyped integer literals, causingE0689when calling.saturating_add().Wrong argument count — call sites passed 4 or 6 args to
calculate_adjustment_amountwhich expected 5.Option<ActuarialModel>vsOption<&ActuarialModel>—calculate_dynamic_premiumexpects a reference but was passed an ownedOption.Fix
calculate_coverage_adjustment_amount,calculate_pool_adjustment_amount,calculate_time_adjustment_amount.BASIS_POINTS_DENOMINATORfromu32tou128.u128type annotations to ambiguous literals..as_ref()at the call site inlib.rs.Affected files
contracts/insurance/src/premium_engine.rscontracts/insurance/src/lib.rs