O uso de vetor como parâmetro é feito declarando um parâmetro com apenas o tipo de dado do
vetor como mostrado na sintaxe abaixo:
Sintaxe: parâmetro
fn nome_funcao(nome_param: &[tipo_dado]) //imutável
fn nome_funcao(nome_param: &mut &[tipo_dado]) //mutável
Sintaxe: argumento
nome_funcao(&mut variavel_vetor); //mutável
nome_funcao(&variavel_vetor); //imutável
Exemplo 7
//mutável
fn funcao1(vet: &mut [i32]) {
//alteração
}
//imutável
fn funcao2(vet: &[i32]) {
//uso sem alteração
}
fn main() {
let mut vet1:[i32;3] = [1, 2, 3];
let vet2:[i32;3] = [4,5,6];
funcao1(&mut vet);
funcao2(&vet2);
}
Saída
-
Para retornar um vetor em Rust, é necessário informar o número de elementos contido no
vetor de retorno na declaração do retorno da função. Duas formas básicas são mostradas
abaixo:
Sintaxe: declaração retorno
fn nome_funcao() -> [i32, QTD] //dimensão fixa
fn nome_funcao<const QTD: usize>() -> [i32, QTD] //dimensão variável
Sintaxe: uso função
nome_funcao::<QTD>(); //dimensão variável
nome_funcao(); //dimensão fixa
Onde:
QTD : número de elementos do vetor
Exemplo 8
//uso de generics
fn funcao1<const QTD: usize>() -> [i32; QTD] {
let vet:[i32;QTD] = [-1;QTD]; //mut se sofre mudança
//preechimento de elementos
return vet;
}
fn funcao2() -> [i32;3]{
let vet:[i32;3] = [0;3]; //mut se sofre mudança
//preechimento de elementos
return vet;
}
fn main() {
let vet:[i32;3] = funcao1::<3>();
println!("{:?}",vet);
let vet2:[i32;3] = funcao2();
println!("{:?}",vet2);
}
Saída
[-1, -1, -1]
[0, 0, 0]
Para retorno vetor dinâmico, o tipo de dado Vector deve ser utilizado. Esse tipo de dado será
visto em Rust: EDD > Vector com mais informações.
O que foi discutido nesse tópico também é valido para o uso de vetor como parâmetro, argumento e
retorno de métodos. Esse assunto pode ser visto em
Rust POO > Método como mais informações.