Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Create your online store today with Shopify

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Disclosure: My content contains affiliate links.

43,698 questions

57,007 answers

573 users

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 Apr 29 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 Apr 29 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 Apr 29 by avibootz
...