Hey there! I'm posting on here because I've noticed what might be a bug of the compiler but could also just be me misunderstanding something related to how Rust works.
Lets take the example of the following enum:
enum Example {
Example1,
Example2,
}
If I then add the following block to the source file, the code will still compile:
impl Example {
fn Example1() {
println!("Hello, World!")
}
}
I do understand that this isn't the recommended case for a function name in Rust, however I would expect that the compiler would catch the name collision regardless.
If I then try to invoke Example::Example1(), I get the following error:
`Example::Example1` is a unit enum variant, and does not take parentheses to be constructed
I can construct the enum variant without issue. So the behaviour is consistent.
However, once again, I don't really understand why the compiler doesn't flag the name collision to begin with. Is there a use case for this behaviour that I'm missing?
I've posted a Gist with two files -- one that compiles, one that doesn't -- to clarify exactly what I'm talking about.