Why do we need to explicitly mark a function as `const`?
Lately I used a lot of const evaluation, especially for computing patterns for match statements at compile time (#![feature(inline_const_pat)]). In a lot of cases I wanted to use some function from another crate that does some simple stuff that would be possible in a const context, if only the crate author had marked said function as const. This was a big bummer sometimes, so I wondered, why is it that functions need to be explicitly marked as const? Could the compiler not just give a compile error if you try to call a function that does some non const compatible stuff in a const context?
I understand that the entire const story is still quite immature and incomplete though, maybe this will all change in the future.