How to create a formatted String out of a literal in Rust?

Use the format! macro:

fn hello_world(name: Option<&str>) -> String {
    match name {
        Some(n) => format!("Hello, World {n}"),
        None => format!("Who are you?"),
    }
}

In Rust, formatting strings uses the macro system because the format arguments are typechecked at compile time, which is implemented through a procedural macro.

There are other issues with your code:

  1. You don’t specify what to do for a None – you can’t just “fail” to return a value.
  2. The syntax for if is incorrect, you want if let to pattern match.
  3. Stylistically, you want to use implicit returns when it’s at the end of the block.
  4. In many (but not all) cases, you want to accept a &str instead of a String.

See also:

Leave a Comment