Rust 编译器无法推断 Option<T> trait 中变量的类型

问题描述 投票:0回答:0

我已经声明了一个包含 Option 数组的结构,但是当我想使用匹配语句访问元素时,当使用 Some(vec)=>{} 和 vec.len() 时,错误触发。

struct Device{
    contents: [Option<Vec<u8>>; 1024],
}
...
fn write(data: ArcBorrow<'_, Device>,_file: &file::File, reader: &mut impl IoBufferReader,offset: u64) -> Result<usize>{
...
       match data.contents[qset]{
            Some(vector) => {
                if i+len > vector.len(){...

我知道当移动发生时借用检查器在 Some 中看到“vec”时会抱怨,但我计划在解决这个问题时使用参考。但是因为我正在改变这个向量,所以这可能值得另一个问题。

报错信息是这样的:

error[E0282]: type annotations needed
  --> /home/alfonso/Desktop/rust/module/array_scull.rs:73:28
   |
73 |                 if i+len > vector.len(){
   |                            ^^^^^^ cannot infer type

我认为类型足够清晰,编译器可以注意到,我做错了什么?为什么 Rust 不能推断出这个向量变量是什么类型?

rust vector type-inference
© www.soinside.com 2019 - 2024. All rights reserved.