Right. You can't exactly return nothing from a function that returns, say, a String. That would violate the function's signature. Even in OOP languages without null-safety an implicit null-pointer would be returned in cases where you return "nothing". Rust makes control flow more explicit, encoding the fact that a function might return "nothing" in its return type by returning Option<String> instead of String, for example, where Option::None indicates to the caller that "nothing" was returned.