作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试下面的Vec<Ev>
代码时,出现[E0308]: mismatched type错误。
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))
}
在此示例中,如何获取Vec索引项目?
最佳答案
函数参数中的语法有点差。可变参数可能会有些困惑,因为有两种不同的表示形式。请参阅this question for a more detailed explanation.
这是更正的elemali_getit
函数:
fn elemani_getir(mut dizi: &Vec<Ev>, sira: usize) -> &Ev {
&dizi[sira]
}
您可以这样称呼它:
println!("eleman: {:?}", elemani_getir(&dizi, 3))
请注意,
elemani_getir
现在返回对
Ev
(
&Ev
)的引用。相反,返回
Ev
会导致错误:
cannot move out of index of `std::vec::Vec<Ev>`
要解决此错误,您可以返回对
Ev
的引用(如上所示),或者返回与
Ev
完全相同的副本(派生
Clone
特性):
#[derive(Debug, Clone)]
struct Ev {
semt: String,
fiyat: i32,
}
fn elemani_getir(mut dizi: &Vec<Ev>, sira: usize) -> Ev {
dizi[sira].clone()
}
关于vector - 如何将可变的Vec <Something>变量传递给函数并获取被索引的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64624836/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!