En Rust, podemos definir funciones para poder dividir nuestro programa en distintas partes. La sintaxis para crear una función es la siguiente:
fn name(param1:type1, param2: type2,paramn: typen) -> return_type{
...
}
Como vemos es obligatorio que todo parámetro tenga un tipo asociado y que tenga además un tipo de vuelta.
Para llamar a una función, simplemente se usa el nombre de esta y los parametros que necesita:
fn main(){
...
mifuncion(3);
...
}
Como hemos podido ver en el ejemplo anterior, a las funciones se les puede pasar parámetros; pudiendose pasar de dos formas:
- Por valor: se crea una copia de la variable y se pasa a la función. Veremos con más detalle este proceso en la gestión de memoria.
- Por referencia: Se pasa una referencia la variable. Veremos con más detalle este proceso en la gestión de memoria.
fn mifuncion(param1:i32)->i32{ //Paso de parametro por valor
...
fn mifuncion(param1:&i32){//Paso de parametro por referencia
...
Para poder devolver un dato, es imprescindible definir de que tipo será en la declaración de esta, usando el operador ->
.
En Rust, la ultima variable referenciada en una ejecución de una función, se toma como dato de respuesta de la función; ejemplo:
fn doble(x:i32)->i32{
2*x //Notese que no hay ; al final
}
Sin embargo, tambien puede usarse la instrucción return
; Ejemplo:
fn doble(x:i32)->i32{
return 2*x;
}