How to create a function with an optional parameter in Rust

3 Answers

0 votes
// Rust requires every function parameter to be explicitly provided.

// Use Option<T>
// You make the parameter optional by wrapping it in Option<T>.

fn greet(name: Option<&str>) {
    let name = name.unwrap_or("Guest");
    println!("Hello, {}!", name);
}

fn main() {
    greet(Some("Kira")); 
    greet(None);         
}



/*
run:

Hello, Kira!
Hello, Guest!

*/



 



answered 5 hours ago by avibootz
0 votes
// Rust requires every function parameter to be explicitly provided.

// Use a Default Value via a Struct 
// Rust doesn’t support default parameters, but structs can implement Default.

#[derive(Default)]
struct GreetOptions<'a> {
    name: Option<&'a str>,
    shout: bool,
}

fn greet(opts: GreetOptions) {
    let mut name: String = opts.name.unwrap_or("Guest").to_string();

    if opts.shout {
        name = name.to_uppercase();
    }

    println!("Hello, {}!", name);
}


fn main() {
    greet(GreetOptions::default());
    greet(GreetOptions { name: Some("Galaxian"), shout: true });
}



/*
run:

Hello, Guest!
Hello, GALAXIAN!


*/



 



answered 4 hours ago by avibootz
0 votes
// Rust requires every function parameter to be explicitly provided.

// Use Builder Pattern

struct Greeter<'a> {
    name: &'a str,
}

impl<'a> Greeter<'a> {
    fn new() -> Self {
        Self { name: "Guest" }
    }

    fn name(mut self, name: &'a str) -> Self {
        self.name = name;
        self
    }

    fn greet(self) {
        println!("Hello, {}", self.name);
    }
}

fn main() {
    Greeter::new().greet();
    Greeter::new().name("Chronos").greet();
}



/*
run:

Hello, Guest
Hello, Chronos

*/



 



answered 4 hours ago by avibootz
...