我创建了以下结构
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;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试编译它时,我收到以下错误
error: cannot index a value of type `&bucket::Bucket`
Run Code Online (Sandbox Code Playgroud)
让 Buckets 保存属性指纹是否更有意义?
小智 7
该类型Bucket是一个具有一个字段的元组结构,您可以使用.0.
因此,您可以将代码更改为:
if (self.0[i as usize] == 0) {
self.0[i as usize] = fp;
return true;
}
Run Code Online (Sandbox Code Playgroud)
您还需要将函数参数从 更改为&self,&mut self以便您可以改变 的字段self。
| 归档时间: |
|
| 查看次数: |
3509 次 |
| 最近记录: |