Ruta graveolens  ·  notes from a language experiment  ·  cultivated since 2025

E0436: Duplicate function definition

CodeCategoryStability
E0436Struct and enumPermanent

Explanation

One source file defines the same top-level function name more than once, or reuses a top-level name across functions, constants, and user-defined types. E0436 covers both function/function duplicates and collisions between different top-level declaration kinds; the metadata name and code are shared intentionally. A different parameter type, parameter count, return type, or parameter mode does not create an overload.

Likely cause

A declaration was copied, renamed to an existing item, or generated twice in one module. Remove or rename one declaration. The same spelling may be used independently in another source file because top-level names are module-scoped.

Examples

Define a function twice in one module

fn answer() -> i32 { 40 }
fn answer() -> i32 { 42 }
fn main() -> i32 { 0 }

Give top-level functions distinct names

fn base() -> i32 { 40 }
fn answer() -> i32 { base() + 2 }
fn main() -> i32 { answer() }

References