pub fn insert(&mut self, key: u64, value: i8) {
let idx: usize = self.get_idx(key);
self.buckets[idx] = Some((key, value));
}
pub fn insert2(&mut self, key: u64, value: i8) {
self.buckets[self.get_idx(key)] = Some((key, value));
}
fn get_idx(&self, key: u64) -> usize {
let mut hasher = DefaultHasher::new();
key.hash(&mut hasher);
hasher.finish() as usize % self.buckets.capacity()
}
위에껀 되는데 아래껀 안되는 이유가 먼가요?
let idx: usize = self.get_idx(key);
self.buckets[idx] = Some((key, value));
}
pub fn insert2(&mut self, key: u64, value: i8) {
self.buckets[self.get_idx(key)] = Some((key, value));
}
fn get_idx(&self, key: u64) -> usize {
let mut hasher = DefaultHasher::new();
key.hash(&mut hasher);
hasher.finish() as usize % self.buckets.capacity()
}
위에껀 되는데 아래껀 안되는 이유가 먼가요?
아래 것은 self.get_idx( )에서 &self를 빌렸는데 = Some((key, value))구문에서 &mut self를 요구해서 그러는 것같음
mut에서 immut으로 가는건 되지않나요..? 먼저 self.buckets[]가 실행되서 self를 빌려서 안에꺼가 실행이 안되는건가.. 이런것도 동시에 빌리는걸로치는건가요??