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))
}