Funciones
Una versión de Rust de la famosa pregunta de la entrevista de FizzBuzz:
fn main() { print_fizzbuzz_to(20); } fn is_divisible(n: u32, divisor: u32) -> bool { if divisor == 0 { return false; } n % divisor == 0 } fn fizzbuzz(n: u32) -> String { let fizz = if is_divisible(n, 3) { "fizz" } else { "" }; let buzz = if is_divisible(n, 5) { "buzz" } else { "" }; if fizz.is_empty() && buzz.is_empty() { return format!("{n}"); } format!("{fizz}{buzz}") } fn print_fizzbuzz_to(n: u32) { for i in 1..=n { println!("{}", fizzbuzz(i)); } }
- En
main
hacemos referencia a una función escrita más abajo. No se necesitan declaraciones de redirección ni encabezados. - Los parámetros de declaración van seguidos de un tipo (al contrario que en algunos lenguajes de programación) y, a continuación, de un tipo de resultado devuelto.
- La última expresión del cuerpo de una función (o de cualquier bloque) se convierte en el valor devuelto. Basta con omitir el carácter
;
al final de la expresión. - Algunas funciones no devuelven ningún valor, devuelven el “tipo unitario”,
()
. El compilador deducirá esto si se omite el tipo de retorno-> ()
. - La expresión de intervalo del bucle
for
enprint_fizzbuzz_to()
contiene=n
, lo que hace que incluya el límite superior.