rustunit-type

What is the purpose of the unit type in Rust?


Rust has the unit type, (), a type with a single zero-size value. The value of this unit type is also specified using ().

What is the purpose of the unit type and its value? Is it a mechanism to avoid using null (or nil) like other languages have?


Solution

  • () is a value of the type () and its purpose is to be useless.

    Everything in Rust is an expression, and expressions that return "nothing" actually return (). The compiler will give an error if you have a function without a return type but return something other than () anyway. For example

    fn f() {
        1i32 // error: mismatched types: expected `()` but found `int`
    }
    

    There are practical uses for () too. Sometimes we don't care about a generic type, and () makes this explicit.

    For example, a Result<(), String> can be used as return type for a function that either completes successfully or fails for a variety of reasons.