The conceptual difference between constexpr and consteval is that consteval is guaranteed to be evaluated at compile-time, so unlike constexpr code, consteval code will never actually end up as a function in your binary.
Rust's const fns on the other hand can be called at runtime, so in that respect they'd be closer to constexpr.
http://b.atch.se/posts/non-constant-constant-expressions/