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

标签 rust

我创建了以下结构

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`

让 Buckets 保存属性指纹是否更有意义?

最佳答案

Bucket 类型是一个具有一个字段的元组结构,您可以使用 .0 访问它。

因此您可以将代码更改为:

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

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

关于rust - 如何访问数组类型结构的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31281012/

相关文章:

c++ - 为什么 Rust 需要 C++ 工具链来生成 Rust 二进制文件,而像 Go 这样的语言没有这个要求?

rust - 将盒装特征转换为 Rust 中的可变特征引用

rust - 如何在 Rust 中返回一个引用 self 的结构体?

rust - 实现 LowerHex 以保留格式选项

generics - 将泛型 Result<T, E> 定义为返回类型

Rust 应用程序编译失败,因为缺少 CARGO_MANIFEST_DIR 环境变量

rust - 如何使用 Rust 中的闭包创建迭代器?

python-3.x - pip install fastapi [all]由于 rust 组件而失败?

rust - 是否有一种紧凑且惯用的方式来打印错误并返回而不返回错误?

multithreading - 从 channel 读取或超时?