【问题标题】:VacantEntry does not implement any method in scope named setVacantEntry 未在名为 set 的范围内实现任何方法
【发布时间】:2015-03-30 17:57:56
【问题描述】:

这个sn-p的代码:

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);
}

给出这个错误:

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),
  |                                ^^^

【问题讨论】:

    标签: hashmap rust


    【解决方案1】:

    VacantEntry 没有实现任何名为set 的方法,但是有一个名为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)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 1970-01-01
    • 2023-03-19
    • 2022-12-11
    相关资源
    最近更新 更多