Cannot decalre the same function twice



examples/functions/declare-twice/src/main.rs
fn main() {
    add(3, 4);
    add("x", "y");
}

fn add(x: i32, y: i32) {
    let z = x + y;
    println!("{z}");
}

fn add(x: &str, y: &str) {
    println!("{x}{y}");
}

   Compiling declare-twice v0.1.0 (/home/gabor/work/slides/rust/examples/functions/declare-twice)
error[E0428]: the name `add` is defined multiple times
  --> src/main.rs:11:1
   |
6  | fn add(x: i32, y: i32) {
   | ---------------------- previous definition of the value `add` here
...
11 | fn add(x: &str, y: &str) {
   | ^^^^^^^^^^^^^^^^^^^^^^^^ `add` redefined here
   |
   = note: `add` must be defined only once in the value namespace of this module

error[E0308]: arguments to this function are incorrect
 --> src/main.rs:3:5
  |
3 |     add("x", "y");
  |     ^^^ ---  --- expected `i32`, found `&str`
  |         |
  |         expected `i32`, found `&str`
  |
note: function defined here
 --> src/main.rs:6:4
  |
6 | fn add(x: i32, y: i32) {
  |    ^^^ ------  ------

Some errors have detailed explanations: E0308, E0428.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `declare-twice` (bin "declare-twice") due to 2 previous errors