VacantEntry does not implement any method in scope named set

对着背影说爱祢 提交于 2019-12-12 09:45:47

问题


This snippet of code:

use std::collections::hash_map::Entry::{Occupied, Vacant};
use std::collections::HashMap;

fn main() {
    let mut vars = HashMap::<i32, f64>::new();
    let key = 10;
    let val = match vars.entry(key) {
        Vacant(entry) => entry.set(0.0),
        Occupied(entry) => entry.into_mut(),
    };

    *val += 3.4;
    println!("{}", val);
}

Gives this error:

error[E0599]: no method named `set` found for type `std::collections::hash_map::VacantEntry<'_, i32, f64>` in the current scope
 --> src/main.rs:8:32
  |
8 |         Vacant(entry) => entry.set(0.0),
  |                                ^^^

回答1:


VacantEntry doesn't implement any method named set, but there is a method named insert:

use std::collections::hash_map::Entry::{Occupied, Vacant};
use std::collections::HashMap;

fn main() {
    let mut vars = HashMap::<i32, f64>::new();
    let key = 10;
    // vars.insert(key, 25.0);
    let val = match vars.entry(key) {
        Vacant(entry) => entry.insert(0.0),
        Occupied(entry) => entry.into_mut(),
    };

    *val += 3.4;
    println!("{}", val);
}

(playground)



来源:https://stackoverflow.com/questions/28249778/vacantentry-does-not-implement-any-method-in-scope-named-set

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!