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

16,166

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.
Share:
16,166
xetra11
Author by

xetra11

Polymathy is my road to happiness, creativity my means of transport

Updated on July 24, 2022

Comments

  • xetra11
    xetra11 almost 2 years

    I'm about to return a string depending the given argument.

    fn hello_world(name:Option<String>) -> String {
        if Some(name) {
            return String::formatted("Hello, World {}", name);
        }
    }
    

    This is a not available associated function! - I wanted to make clear what I want to do. I browsed the doc already but couldn't find any string builder functions or something like that.