Ken*_*eth 7 rust borrow-checker
我想在地图中插入或更新一个值,然后获取键的数量。
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
let count = map.entry("Tom").or_insert(0);
*count += 1;
let size = map.keys().len();
println!("{} men found", size);
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
let count = map.entry("Tom").or_insert(0);
*count += 1;
let size = map.keys().len();
println!("{} men found", size);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?是我写的方式不对吗?
选择以下之一:
使用 Rust 2018 或其他具有非词法生命周期的 Rust 版本:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
let count = map.entry("Tom").or_insert(0);
*count += 1;
let size = map.keys().len();
println!("{} men found", size);
}
Run Code Online (Sandbox Code Playgroud)不要创建临时值:
*map.entry("Tom").or_insert(0) += 1;
Run Code Online (Sandbox Code Playgroud)添加一个块来限制借用:
{
let count = map.entry("Tom").or_insert(0);
*count += 1;
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |