Avatar ·

Cómo implementar argumentos de funciones por defecto en Rust?

¡Hola, colegas! Soy nuevo en Rust y vengo de Python, donde se pueden escribir fácilmente funciones con argumentos por defecto:

def greet(name, greeting="Hola"):
    print(f"{greeting}, {name}!")

Ahora intento hacer lo mismo en Rust, pero el compilador se queja. Aquí está mi código:

fn greet(name: &str, greeting: &str = "Hola") {
    println!("{}, {}!", greeting, name);
}

El compilador da un error: expected identifier, found `=`. Entiendo que Rust no tiene sintaxis para argumentos por defecto, pero ¿cómo resolver este problema? Necesito que la función pueda funcionar tanto con un argumento (entonces el saludo por defecto es "Hola") como con dos.

Ya intenté usar sobrecarga de funciones, pero Rust no la soporta. Intenté hacer dos funciones con nombres diferentes — funciona, pero el código resulta voluminoso. ¿Hay una forma más idiomática? ¿Quizás usar structs o enums? ¿O existe alguna macro o patrón estándar para esto?