如何访问数组类型的结构体的元素



我创建了以下结构体

pub const BUCKET_SIZE: usize = 4;
pub const FINGERPRINT_SIZE: usize = 1;
pub struct Fingerprint ([u8; FINGERPRINT_SIZE]);
impl Fingerprint {
    pub fn new(bytes: [u8; FINGERPRINT_SIZE]) -> Fingerprint {
        return Fingerprint(bytes);
    }
}
pub struct Bucket ([Fingerprint; BUCKET_SIZE]);
impl Bucket {
    pub fn new(fingerprints: [Fingerprint; BUCKET_SIZE]) -> Bucket {
        Bucket(fingerprints)
    }
    pub fn insert(&self, fp: Fingerprint) -> bool {
        for i in 0..BUCKET_SIZE {

            //HERE IS THE ERROR
            if (self[i as usize] == 0) {
                self[i as usize] = fp;
                return true;
            }

        }
        return false;
    }
}

当尝试编译它时,我得到以下错误

error: cannot index a value of type `&bucket::Bucket`

让bucket持有属性指纹更有意义吗?

类型Bucket是一个只有一个字段的元组结构体,您可以通过.0访问它。

所以你可以把代码改成:

        if (self.0[i as usize] == 0) {
            self.0[i as usize] = fp;
            return true;
        }

您还需要将函数参数从&self更改为&mut self,以便您可以更改self的字段。

最新更新