Vector 如何传递可变向量<;某物>;变量来执行函数并获取索引的项

Vector 如何传递可变向量<;某物>;变量来执行函数并获取索引的项,vector,rust,Vector,Rust,当我为Vec尝试下面的代码时,我得到一个错误 使用std::fmt::Error; #[导出(调试)] 结构电动汽车{ 弦, fiyat:i32, } impl电动汽车{ fn yeni(alan:&str,fiyat:i32)->Ev{ 自我{ semt:alan.to_string(), 菲亚特 } } } fn dizi_yap(boyut:usize)->结果{ 设mut-evler=Vec:::具有_容量(boyut); 推(Ev::yeni(“melikgazi”,210)); 埃夫

当我为
Vec
尝试下面的代码时,我得到一个错误

使用std::fmt::Error;
#[导出(调试)]
结构电动汽车{
弦,
fiyat:i32,
}
impl电动汽车{
fn yeni(alan:&str,fiyat:i32)->Ev{
自我{
semt:alan.to_string(),
菲亚特
}
}
}
fn dizi_yap(boyut:usize)->结果{
设mut-evler=Vec:::具有_容量(boyut);
推(Ev::yeni(“melikgazi”,210));
埃夫勒·普什(Ev::耶尼(“科卡西南”,120));
推(Ev::yeni(“hacılar”,410));
埃夫勒·普什(Ev::耶尼(“bünyan”,90));
Ok(埃夫勒)
}
fn elemani_getir(&mut dizi:Vec,sira:usize)->Ev{
迪齐[西拉]
//dizi.get(sira.expect)(“hata”)
}
fn main(){
让mut dizi=dizi_yap(1)。expect(“ulasmadi”);
println!(“eleman:{:?}”,dizi[3]);
println!(“eleman:{:?}”,elemani_getir(dizi,3))
}

在本例中,如何获取Vec索引项?

函数参数中的语法有点不正确。可变参数可能有点混乱,因为有两种不同的表示形式。指

以下是已更正的
elemali\u getit
功能:

fn elemani_getir(mut dizi:&Vec,sira:usize)->&Ev{
&迪齐[西拉]
}
你可以这样称呼它:

println!(“eleman:{:?}”,elemani_getir(&dizi,3))
请注意,
elemani_getir
现在返回对
Ev
&Ev
)的引用。返回
Ev
会导致错误:

无法移出'std::vec::vec'的索引`
要避免此错误,您可以返回如上所示的对
Ev
的引用,或者返回衍生
克隆的
Ev
my的精确副本:

#[派生(调试、克隆)]
结构电动汽车{
弦,
fiyat:i32,
}
fn elemani_getir(mut dizi:&Vec,sira:usize)->Ev{
dizi[sira].clone()
}

@natrollus没问题,很乐意帮忙
use std::fmt::Error;
#[derive(Debug)]

struct Ev {
    semt: String,
    fiyat : i32,
}

impl Ev {
    fn yeni (alan: &str,fiyat: i32) -> Ev {
        Self {
            semt: alan.to_string(),
            fiyat
        }
    }
}


fn dizi_yap(boyut:usize) -> Result<Vec<Ev>,Error> {
    let mut evler = Vec::<Ev>::with_capacity(boyut);
    evler.push(Ev::yeni("melikgazi", 210));
    evler.push(Ev::yeni("kocasinan", 120));
    evler.push(Ev::yeni("hacılar", 410));
    evler.push(Ev::yeni("bünyan", 90));
    Ok(evler)
}

fn elemani_getir(&mut dizi:Vec<Ev>, sira:usize) -> Ev {
    dizi[sira]
    // dizi.get(sira).expect("hata")
}


fn main() {

    let mut dizi = dizi_yap(1).expect("ulasmadi");

    println!("eleman: {:?}",dizi[3]);
    println!("eleman: {:?}",elemani_getir(dizi, 3))

}